简单例子
package mode.builder;
/**
* @author gang.tu
* @ClassName Person
*/
public class Person {
private String id;
private String name;
private Person() {
}
public static Person builder() {
return new Person();
}
public Person setId(String id) {
this.id = id;
return this;
}
public Person setName(String name) {
if (this.id == null) {
this.name = name;
}
return this;
}
@Override
public String toString() {
return "id:" + this.id + " name:" + this.name;
}
}
单元测试
package mode.builder;
import org.junit.Test;
import static org.junit.Assert.*;
/**
* @author gang.tu
*/
public class PersonTest {
@Test
public void builder() {
Person person1 = Person.builder().setId("id1").setName("name1");
System.out.println(person1);
Person person2 = Person.builder().setName("name1").setId("id1");
System.out.println(person2);
}
}
运行结果
id:id1 name:null
id:id1 name:name1
特点
- 方法返回实例本身。
- 不同调用顺序可能产生不同的结果。
- 当不同业务对同一个实例的关注点不同。
扩展
比如之前使用的模板方法:设计模式-模板方法思考
如果现在为了提高扩展性,选择可以自由的组装生产的步骤,也可以使用建造者模式去改造。
本文深入探讨了建造者模式的设计理念,通过一个简单的Person类示例,展示了如何使用该模式进行对象创建。同时,文章提供了单元测试代码,验证了模式的有效性,并分析了其特点与扩展性。

被折叠的 条评论
为什么被折叠?



