1700459662
设计模式之禅 11.2 建造者模式的定义
1700459663
1700459664
建造者模式(Builder Pattern)也叫做生成器模式,其定义如下:
1700459665
1700459666
Separate the construction of a complex object from its representation so that the same construction process can create different representations.(将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。)
1700459667
1700459668
建造者模式的通用类图如图11-4所示。
1700459669
1700459670
1700459671
1700459672
1700459673
图11-4 建造者模式通用类图
1700459674
1700459675
在建造者模式中,有如下4个角色:
1700459676
1700459677
❑Product产品类
1700459678
1700459679
通常是实现了模板方法模式,也就是有模板方法和基本方法,这个参考第10章的模板方法模式。例子中的BenzModel和BMWModel就属于产品类。
1700459680
1700459681
❑Builder抽象建造者
1700459682
1700459683
规范产品的组建,一般是由子类实现。例子中的CarBuilder就属于抽象建造者。
1700459684
1700459685
❑ConcreteBuilder具体建造者
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
[
上一页 ]
[ :1.700459661e+09 ]
[
下一页 ]