面向对象的设计模式 ——建造者模式
建造者模式:把对象的设置过程抽取出来。
对于那些设置过程比较复杂的对象,可以把这一个过程抽取出来形成一个接口(规范)和一个设置过程,让具体的实现类和设置类去设置这个复杂的对象。
class Product{
List<String> parts = new List<String>();
public void Add(String part){
parts.add(part);
}
public void show(){
foreach(String p : parts){
System.out.println(p);
}
}
}
interface Builder{
public abstract void BuildPartA();
public abstract void BuildPartB();
public abstract Product GetResult();
}
class ConcreteBuilder1 implements Builder{
private Product product = new product();
public void BuilderPartA(){
product.add("部件A");
}
public void BuilderPartB(){
product.add("部件B");
}
public Product GetResult(){
return product;
}
}
class ConcreteBuilder2 implements Builder{
private Product product = new product();
public void BuilderPartA(){
product.add("部件X");
}
public void BuilderPartB(){
product.add("部件Y");
}
public Product GetResult(){
return product;
}
}
class Director{
public void Construct(Builder builder){
builder.BuildPartA();
builder.BuildPartB();
}
}
public class test{
public static void main(String[] args){
Director director = new Director();
Builder b1 = new ConcreteBuilder1();
Builder b2 = new COncreteBuilder2();
direct.Construct(b1);
Product p1 = b1.GetResult();
p1.show();
direct.Construct(b2);
Product p2 = b2.GetResult();
p2.show();
}
}