- 设计模式之生成器模式(Builder Pattern):https://www.jianshu.com/p/f4248525e2d1
- 设计模式之–生成器模式与抽象工厂模式的比较:http://blog.csdn.net/hawksoft/article/details/6626775
(1)定义一个产品类(虽然产品类只有一个,但组成产品类的组件却是会变化的,就好比都是同一品牌类型的电脑,但是它们的配置却是不一样的。)
//组件(子对象)1、2、3
public class Unit1{...}
public class Unit2{...}
public class Unit3{...}
//产品(复杂对象)
public class Product{
Unit1 u1;
Unit2 u2;
Unit3 u3;
}
(2)定义n个产品生成器XXBuild类,它们实现了一个共同的生成器接口IBuild。
//一、定义一个共同的生成器接口IBuild,它是将所有组件的抽象创建方法和复杂对象的抽象创建方法封装起来了。
public interface IBuild{
//所有组件的抽象创建方法
public void createUnit1();
public void createUnit2();
public void createUnit3();
//复杂对象的抽象创建方法
public Product composite();
}
//二、定义n个产品生成器类
public class XXBuild implements IBuild{
Product p = new Product;
public void createUnit1(){p.u1 = ...}
public void createUnit2(){p.u2 = ...}
public void createUnit3(){p.u3 = ...}
public Product composite(){
...//关联Unit1、Unit2、Unit3
return p; //返回复杂对象p
}
}
(3)定义一个统一调度类Director,它是对生成器接口IBuild的封装。
public class Director{
private IBuild ibuild;
public Director(IBuild ibuild){
this.ibuild = ibuild;
}
public Product build(){
ibuild.createUnit1();
ibuild.createUnit2();
ibuild.createUnit3();
return ibuild.composite();
}
//测试
public static void main(String[] args){
IBuild build = XXBuild();
Director director = new Director(build);
Product p = director.build();
}
}