牛骨文教育服务平台(让学习变的简单)
博文笔记

Android Java方法链起来!链式调用方法、仿Builder 等。

创建时间:2016-08-01 投稿人: 浏览次数:1330

例子:
1.普通的bean

package com.louisgeek.louischainingmethod;

/**
 * Created by louisgeek on 2016/8/1.
 */
public class NewsBean {
    private int newsID;
    private String newsTitle;
    private String newsContent;

    @Override
    public String toString() {
        return "NewsBean{" +
                "newsID=" + newsID +
                ", newsTitle="" + newsTitle + """ +
                ", newsContent="" + newsContent + """ +
                ", newsImgUrl="" + newsImgUrl + """ +
                "}";
    }

    private String newsImgUrl;

    public int getNewsID() {
        return newsID;
    }

    public void setNewsID(int newsID) {
        this.newsID = newsID;
    }

    public String getNewsTitle() {
        return newsTitle;
    }

    public void setNewsTitle(String newsTitle) {
        this.newsTitle = newsTitle;
    }

    public String getNewsContent() {
        return newsContent;
    }

    public void setNewsContent(String newsContent) {
        this.newsContent = newsContent;
    }

    public String getNewsImgUrl() {
        return newsImgUrl;
    }

    public void setNewsImgUrl(String newsImgUrl) {
        this.newsImgUrl = newsImgUrl;
    }
}

2.简单的改变:

package com.louisgeek.louischainingmethod;

/**
 * Created by louisgeek on 2016/8/1.
 */
public class NewsBean_Chaining {


    private int newsID;
    private String newsTitle;

    @Override
    public String toString() {
        return "NewsBean_Chaining{" +
                "newsID=" + newsID +
                ", newsTitle="" + newsTitle + """ +
                ", newsContent="" + newsContent + """ +
                ", newsImgUrl="" + newsImgUrl + """ +
                "}";
    }

    private String newsContent;
    private String newsImgUrl;

    public int getNewsID() {
        return newsID;
    }

    public NewsBean_Chaining setNewsID(int newsID) {
        this.newsID = newsID;
        return this;
    }

    public String getNewsTitle() {
        return newsTitle;
    }

    public NewsBean_Chaining setNewsTitle(String newsTitle) {
        this.newsTitle = newsTitle;
        return this;
    }

    public String getNewsContent() {
        return newsContent;
    }

    public NewsBean_Chaining setNewsContent(String newsContent) {
        this.newsContent = newsContent;
        return this;
    }

    public String getNewsImgUrl() {
        return newsImgUrl;
    }

    public NewsBean_Chaining setNewsImgUrl(String newsImgUrl) {
        this.newsImgUrl = newsImgUrl;
        return this;
    }
}

3.仿AlertDialog.Builder

package com.louisgeek.louischainingmethod;

/**
 * Created by louisgeek on 2016/8/1.
 */
public class NewsBean_Builder {
    private int newsID;
    private String newsTitle;
    private String newsContent;
    private String newsImgUrl;
//
public int getNewsID() {
    return newsID;
}

    public void setNewsID(int newsID) {
        this.newsID = newsID;
    }

    public String getNewsTitle() {
        return newsTitle;
    }

    public void setNewsTitle(String newsTitle) {
        this.newsTitle = newsTitle;
    }

    public String getNewsContent() {
        return newsContent;
    }

    public void setNewsContent(String newsContent) {
        this.newsContent = newsContent;
    }

    public String getNewsImgUrl() {
        return newsImgUrl;
    }

    public void setNewsImgUrl(String newsImgUrl) {
        this.newsImgUrl = newsImgUrl;
    }
    //
    @Override
    public String toString() {
        return "NewsBean_Builder{" +
                "newsID=" + newsID +
                ", newsTitle="" + newsTitle + """ +
                ", newsContent="" + newsContent + """ +
                ", newsImgUrl="" + newsImgUrl + """ +
                "}";
    }
//////
    private NewsBean_Builder(Builder builder) {
        this.newsID = builder.newsID;
        this.newsTitle = builder.newsTitle;
        this.newsContent = builder.newsContent;
        this.newsImgUrl = builder.newsImgUrl;
    }
    //
    public static class Builder{
        private int newsID;
        private String newsTitle;
        private String newsContent;
        private String newsImgUrl;

        public Builder newsID(int newsID) {
            this.newsID = newsID;
            return this;
        }

        public Builder newsTitle(String newsTitle) {
            this.newsTitle = newsTitle;
            return this;
        }

        public Builder newsContent(String newsContent) {
            this.newsContent = newsContent;
            return this;
        }
        public Builder newsImgUrl(String newsImgUrl) {
            this.newsImgUrl = newsImgUrl;
            return this;
        }

        ////
        public NewsBean_Builder build(){
            return new NewsBean_Builder(this);
        }
    }
}

使用对比:

package com.louisgeek.louischainingmethod;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "MainActivity";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        NewsBean newsBean=new NewsBean();
        newsBean.setNewsID(1);
        newsBean.setNewsTitle("TITLE1");
        newsBean.setNewsContent("CONTENT1");
        newsBean.setNewsImgUrl("IMAGEURL1");

        Log.d(TAG, "onCreate: newsBean:"+newsBean.toString());

        NewsBean_Chaining newsBean_chaining=new NewsBean_Chaining();
        newsBean_chaining.setNewsID(2)
                .setNewsTitle("TITLE2")
                .setNewsContent("CONTENT2")
                .setNewsImgUrl("IMAGEURL2");

        Log.d(TAG, "onCreate: newsBean_chaining:"+newsBean_chaining.toString());

        NewsBean_Builder.Builder news_B_Builder=new NewsBean_Builder.Builder();
        NewsBean_Builder newsBean_B=news_B_Builder.newsID(3)
                .newsTitle("TITLE3")
                .newsContent("CONTENT3")
                .newsImgUrl("IMAGEURL3")
                .build();

        Log.d(TAG, "onCreate: newsBean_B:"+newsBean_B.toString());
        //newsBean_B.getNewsContent()

    }
}

https://github.com/louisgeek/LouisChainingMethod

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。