生成器模式
实际中,更新任何类都可以考虑成生成器模式。
组成
Product
Product。
代码片
。
// Product
public class Product{
Unit1 u1;
Unit2 u2;
public Unit1 createU1(){
return new Unit1();
}
public Unit2 createU2(){
return new Unit2();
}
public void composite(){
//Unit1+Unit2
}
}
Unit1。
代码片
。
// Unit1
public class Unit1{
}
Unit2。
代码片
。
// Unit2
public class Unit2{
}
IBuild
IBuild。
代码片
。
// IBuild
public interface IBuild{
public Product create();
}
Builder
Builder。
代码片
。
// Builder
public class Builder implements IBuild{
//
Product p=new Product();
public void createU1(){
p.createU1();
}
public void createU2(){
p.createU2();
}
public Product composite(){
p.composite();
return p;
}
@Override
public Product create(){
createU1();
createU2();
return composite();
}
}
Director
Director。
代码片
。
// Director
public class Director{
//
private IBuild build;
public Director(IBuild build){
this.build=build;
}
//
public Product build(){
return build.create();
}
}
总结
总之,对于生成器模式创建复杂对象而言,主要原则是对象构建过程与表示相分离。
网上引用:
1.客户端不必知道产品内部组成的细节,将产品本身与产品的创建过程解耦,使得相同的创建过程可以创建不同的产品对象。
2.每一个具体建造者都相对独立,与其他的具体建造者无关,因此可以很方便地替换具体建造者或增加新的具体建造者,扩展方便,符合开闭原则3.可以更加精细地控制产品的创建过程。