建造者模式
概述
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
将构建一个复杂对象所需的必要过程规定到一个Builder接口之中,由不同的实现类实现即“同样构建过程创建不同表示”。最后,由一个指挥者Director指挥建造过程。
示例代码
class Product{
private List<String> parts = new ArrayList<>();
public void add(String part){
parts.add(part);
}
public void show(){
foreach(String part : parts){
System.out.println(part);
}
}
}
interface Builder{
void buildPartA();
void buildPartB();
Product getResult();
}
class ConcretBuilder1 implements Builder{
private Product product = new Product();
public void buildPartA(){
product.add("部件A");
}
public void buildPartB(){
product.add("部件B");
}
public Product getResult(){
return product;
}
}
class ConcretBuilder2 implements Builder{
private Product product = new Product();
public void buildPartA(){
product.add("部件X");
}
public void buildPartB(){
product.add("部件Y");
}
public Product getResult(){
return product;
}
}
class Director{
public Product construct(Builder builder){
builder.buildPartsA();
builder.buildPartsB();
return builder.getResult();
}
}
//客户端
Builder b1 = new ConcretBuilder1();
Builder b2 = new ConcretBuilder2();
Director director = new Director();
Product p1 = director.construct(b1);
p1.show();
Product p2 = director.construct(b2);
p2.show();