构造者模式

  • 构造者模式(Builder Pattern)

建造者模式是及其常用的一种设计模式,经常提现在一些开源的三方库中来进行return 当前对象进行链式调用,如果你要开源一个niubility 的库,那么学习一下建造者模式是非常有必要的。

  • 介绍:将一个复杂对象的构建与它的表示分离,用于属性参数很多时。

  • 很多流行框架用到它,举个最典型的Retrofit的使用。

// 忽略参数,看下如何使用
Retrofit retrofit = new Retrofit.Builder()
                .client(null)
                .baseUrl(null)
                .addConverterFactory(null)
                .addCallAdapterFactory(null)
                .build();
  • 创建一个自己的builder 模式类,制作咖啡,需要水,咖啡,加冰多少,加糖多少等变量
/**
 * Author: jfson
 * Create on:  2017/9/20
 * Description:
 */
public class Coffee {
    public String water;  //放多少水
    public String coffee; // 放多少咖啡
    public String ice;  // 多少冰
    public String suger; // 多少糖

    public Coffee() {
    }

    public Coffee(Coffee coffee) {
        if (coffee == null) {
            return;
        }
        this.water = coffee.water;
        this.coffee = coffee.coffee;
        this.ice = coffee.ice;
        this.suger = coffee.suger;
    }


    public static final class Builder {
        private Coffee mCoffee;

        public Builder() {
            mCoffee = new Coffee();
        }

        public Coffee.Builder setWater(String water){
            mCoffee.water = water;
            return Builder.this;
        }

        public Coffee.Builder setCoffee(String coffee){
            mCoffee.coffee = coffee;
            return Builder.this;
        }

        public Coffee.Builder setIce(String ice){
            mCoffee.ice = ice;
            return Builder.this;
        }

        public Coffee.Builder setSuger(String suger){
            mCoffee.suger = suger;
            return Builder.this;
        }

        public Coffee build(){
            return new Coffee(mCoffee);
        }
    }
}
  • 使用跟Retrofit方式一样
Coffee coffee = new Coffee.Builder()
                .setCoffee("more")
                .setIce("no")
                .setSuger("no")
                .setWater("little")
                .build();
  • so,是不是很简单,很酸爽。

你可能感兴趣的:(构造者模式)