本文是自己的学习笔记,主要参考以下资料
- 大话设计模式,程杰著,清华大学出版社出版
- 马士兵教育
1、 Build模式应用场景
Build模式是用于构建复杂的对象。
比如现在有一个对象,他内部有很多很多成员变量,这些成员变量设值的时候还可能有逻辑运算,按照传统的方法,比如构造器直接赋值。
//假设这个People有100个参数
public People(Integer id, String name, ... , Integer age)
那用构造器构造对象的话,写起来就太费劲了。即使不用构造器,在外部不断地setValue()
,那每次构造一个对象也是一个浩大的工程。
如果我们使用Build模式,那写法就会变得像下面这样简单。
People people = new PeopleBuilder().buildId()
.buildName(String name)
.buildAge(Integer age)
// 户口积分,可能会用年龄和是否已婚作为参数
.buildScore(age, isMarried)
.build();
通过一个个build
方法赋值运算成员变量。而且更方便的是,有些属性我们不想现在赋值(比如age),我们只需要去掉buildAge()
就好,完全不影响其他的属性的build
People people = new PeopleBuilder().buildId()
.buildName(String name)
// .buildAge(Integer age)
// 户口积分,可能会用年龄和是否已婚作为参数
.buildScore(age, isMarried)
.build();
如果是构造器方式来实现的话,我们还得给构造器参数中的age
赋null
,很不利于阅读。
Integer age = null;
new People("张三", age);
2、Build模式的实现
2.1、建立Builder
这个其实比较简单,看代码就基本明白了。
public class PeopleBuilder{
private People people;
// 返回类型是PeopleBuildr,是为了能写链式结构.buildName().buildId();
public PeopleBuilder buildId(Integer id) {
this.people.setId(id);
return this;
}
public PeopleBuilder buildName(String name) {
this.people.setName(name);
return this;
}
public People build() {
return this.people;
}
}