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

51 篇文章 0 订阅

例子:
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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值