Java设计模式:Build模式

本文是自己的学习笔记,主要参考以下资料

- 大话设计模式,程杰著,清华大学出版社出版
- 马士兵教育

  • 1、 Build模式应用场景
  • 2、Build模式的实现
    • 2.1、建立Builder


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();

如果是构造器方式来实现的话,我们还得给构造器参数中的agenull,很不利于阅读。

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;
	}
}

你可能感兴趣的:(设计模式,设计模式)