彻底理解android 建造者模式

Android设计模式之建造者模式(builder pattern)

http://blog.csdn.net/nugongahou110/article/details/50395698


使用builder设计模式完美的优点:具有必填属性和可选属性的区分,更重要的是 可读性很强。

public Student getStudent(){
        return new Student.StudentBuilder(1,"小明")//必填属性在构造方法中赋值
                    .setAge(1)//设置可选属性 年龄
                    .setGender(1)//设置可选属性 性别 默认1为男
                    .build();//对象构建完毕的标识,返回Student对象
    }

值得注意的几点: 

1.Student的构造方法是私有的,也就是说我们不能直接new出Student对象 

2.我们又将Student的属性用final修饰了,并且我们在构造方法中都为他们进行了初始化操作,我们只提供了getter方法 

3.StudentBuilder的属性中只给我们必须的属性添加的final修饰,所以我们必须在StudentBuilder的构造方法中为他们初始化


builder模式另一个重要特性是:它可以对参数进行合法性验证,如果我们传入的参数无效,我们可以抛出一个IllegalStateException异常,但是我们在哪里进行参数合法性验证也是有讲究的:那就是在对象创建之后进行合法性验证。我们修改StudentBuilder的build()方法

public Student build(){
            Student student = new Student(this);
            if (student.getAge()>120){
                throw  new IllegalStateException("年龄超出限制");
            }
            return student;
        }


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值