模式定义:
模式结构:
略
模式实现:
public class BuildModel {
@Test
public void testBuildModel() {
Build build = new SomePhoneBuild();
Phone phone = build.setName("诺基亚").create();
System.out.println(phone);
}
/**
* 抽象产品类(也可以不抽象)
*/
abstract class Phone {
private String name;
private String price;
protected String blackTechnology;
public void setName(String name) {
this.name = name;
}
public void setPrice(String price) {
this.price = price;
}
abstract void setBlackTechnology();
}
class SomePhone extends Phone {
@Override
void setBlackTechnology() {
blackTechnology = "dou ni wan ";
}
}
/**
* 抽象构建者类
*/
abstract class Build {
abstract Build setName(String name);
abstract Build setPrice(String price);
abstract Phone create();
}
class SomePhoneBuild extends Build {
private Phone phone;
public SomePhoneBuild() {
phone = new SomePhone();
phone.setBlackTechnology();
phone.setName("a");
phone.setPrice("1");
}
public SomePhoneBuild setName(String name) {
phone.setName(name);
return this;
}
public SomePhoneBuild setPrice(String price) {
phone.setPrice(price);
return this;
}
public Phone create() {
return phone;
}
}
}
适用场景:
1、初始化一个复杂的对象,如参数多,且很多参数都有默认值
2、相同的方法,不同的执行顺序,产生不同的事件结果时