android设计模式-builder模式

builder模式可以看成是链式调用,如,是builder不是那个bunder

new AlertDialog.Builder(this)
                .setTitle("对话框")
                .setMessage("测试")
                .setIcon(R.mipmap.ic_launcher)
                .create()
                .show();

以及通知的链式调用。

1.变种的builder模式,可以用于多种品类属性命名等。在android中一般使用变种的builder就够了。

属性多的时候,使用set,get第二种方式,是解决了上面的问题,但是会让调用set方法的对象重复了20次或更多,同时也属于不连续的情况,该类的其他属性在被创建之后被修改,给程序带来了一些不安全性,像下面”

//属性越多,调用者(商品)重复越多
商品.setX1("");
商品.setX2("");
商品.setX3("");
.....

//修改已经设置好了的某个属性
商品.setX1("修改后的属性");

public class A {
    private final String mX1;
    private int mX2;

    private A(Builder builder) {
        mX1 = builder.mX1;
        mX2 = builder.mX2;
    }

    public static final class Builder {
        private final String mX1;
        private int mX2;

        public Builder() {
        }

        public Builder setX1(String val) {
            mX1 = val;
            return this; //返回的Builder对象,通过第一个返回的Build对象,能够去调用setX2.通过第二个返回的Builder去调用build(),build方法返回A的对象,并在启动也传入了builder对象。就调用到了A的构造函数中,去复制类A相关的属性了。
        }

        public Builder setX2(int val) {
            mX2 = val;
            return this;
        }

        public A build() {
            return new A(this);
        }
    }
}


//使用
new A.Builder()
      .setX1()
      .setX2()
      .build();
 

          

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值