Android中的Builder模式

Builder模式:将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示。

什么时候可以使用builder模式:
1、一个类中有很多个属性,并且很多属性都有可能在创建对象的时候初始化。
2、相同的方法,不同的执行顺序,产生不同的事件结果时
3、多个部件或零件,都可以装配到一个对象中,但是产生的运行效果又不相同时
4、产品类非常复杂,或者产品类中的调用顺序不同产生了不同的作用,这个时候使用建造者模式非常合适

Android builder模式的特点:
1、Android builder模式是变种的builder模式,减少了对象创建过程中引用的多个重载构造方法。
2、使用builder模式的类,构造方法是私有的。
3、使用builder模式的类是不可变的,对外只提供getter方法或者连getter方法都不提供。

实现步骤:
1、定义属性:属性可用final修饰,必须要初始化的属性需要在定义的builder类中的构造函数中传递参数初始化。
2、定义一个builder类:一般是一个内部类,builder类中有外部类的所有属性。
3、外部类构造函数私有化,并且构造函数中的参数为builder类对象,并且在构造函数中初始化所有的成员属性。
4、所有需要设置的属性值,在内部类builder中设置,并且返回builder类本身。
4、builder类提供外部类实例对象。

public class User {
    private final String name;//必选属性:必须赋值 builder类构造函数中赋值
    private int age;
    private String address;

    private User(Builder builder) {
        //初始化变量
        this.name = builder.name;
        this.age = builder.age;
        this.address = builder.address;
    }

    static class Builder {
        //与外部类User成员属性一致
        private final String name;
        private int age;
        private String address;

        public Builder(String name) {
            this.name = name;//必选属性
        }

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

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

        //提供外部类实例对象
        public User create() {
       		 //在创建实例的时候再对属性的合理性做判断,不必在设置的时候判断
            if (age <= 0) {
                throw new RuntimeException("年龄不合法");
            }
            return new User(this);
        }
    }
}

//使用
public class DemoActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_demo);

        User user = new User.Builder("UserName")
                .setAge(18)
                .setAddress("China")
                .create();
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值