大话设计模式---好菜每回味不同---建造者模式
product 类---产品类,由多个部件组成
class Product{
List<String> parts = new List<String>();
public void Add(String part){
parts.Add(part);
}
public void show(){
System.out.println("产品开始创建");
foreach(String part:parts){
System.out.println(part);
}
}
}
Builder类---抽象构造者类,确定产品由两个部件partA,partB组成。并声明一个得到构造结果后的方法getReult
abstract class Builder{
public abstract void BuildPartA();
public abstract void BuildPartB();
public abstract Product GetRusult();
}
ConcreteBuilder类---具体的构建类
class ConcreteBuilder1 extends Builder{
private Product product = new Product();
public BuildPartA(){
product.Add("部件A");
}
public BuildPartB(){
product.Add("部件B");
}
public Product GetRuslt(){
return product;
}
}
class ConcreteBuilder2 extends Builder{
private Product product = new Product();
public BuildPartA(){
product.Add("部件X");
}
public BuildPartB(){
product.Add("部件Y");
}
public Product GetRuslt(){
return product;
}
}
//Director 类---指挥者类
class Directory{
public void construct(Builder builder){
builder.buildPartA();
builder.buildPartB();
}
}
客户端代码,客户不需要知道具体的构造过程。
Director director = new Director();
Builder b1 = new ConcreteBuilder();
Builder b2 = new ConcreteBuilder();
director.construct(b1);
Product p1 = b1.getResult();
p1.show();
director.construct(b2);
Product p2 = b2.getResult();
p2.show();