1700459686
1700459687
实现抽象类定义的所有方法,并且返回一个组建好的对象。例子中的BenzBuilder和BMWBuilder就属于具体建造者。
1700459688
1700459689
❑Director导演类
1700459690
1700459691
负责安排已有模块的顺序,然后告诉Builder开始建造,在上面的例子中就是我们的老大,XX公司找到老大,说我要这个或那个类型的车辆模型,然后老大就把命令传递给我,我和我的团队就开始拼命地建造,于是一个项目建设完毕了。
1700459692
1700459693
建造者模式的通用源代码也比较简单,先看Product类,通常它是一个组合或继承(如模板方法模式)产生的类,如代码清单11-12所示。
1700459694
1700459695
代码清单11-12 产品类
1700459696
1700459697
public class Product{
1700459698
1700459699
public void doSomething(){
1700459700
1700459701
//独立业务处理
1700459702
1700459703
}
1700459704
1700459705
}
1700459706
1700459707
抽象建造者如代码清单11-13所示。
1700459708
1700459709
代码清单11-13 抽象建造者
1700459710
1700459711
public abstract class Builder{
1700459712
1700459713
//设置产品的不同部分,以获得不同的产品
1700459714
1700459715
public abstract void setPart();
1700459716
1700459717
//建造产品
1700459718
1700459719
public abstract Product buildProduct();
1700459720
1700459721
}
1700459722
1700459723
其中,setPart方法是零件的配置,什么是零件?其他的对象,获得一个不同零件,或者不同的装配顺序就可能产生不同的产品。具体的建造者如代码清单11-14所示。
1700459724
1700459725
代码清单11-14 具体建造者
1700459726
1700459727
public class ConcreteProduct extends Builder{
1700459728
1700459729
private Product product=new Product();
1700459730
1700459731
//设置产品零件
1700459732
1700459733
public void setPart(){
1700459734
1700459735
/*
[
上一页 ]
[ :1.700459686e+09 ]
[
下一页 ]