[设计模式]:面向可维护性的设计模式:Factory,Abstract Factory,Builder
Factory Method pattern 工厂方法模式
也称为虚拟构造器
当client不知道要创建哪个具体类的实例,或者不想在client代码中指明要具体创建的实例时,用工厂方法。
定义一个用于创建对象的接口,让其子类来决定实例化哪一个类,从而使一个类的实例化延迟到其子类。
如果使用了工厂方法:
优点:对扩展的开放,对修改已有代码的封闭
Abstract Factory Pattern
抽象工厂模式:提供接口以创建一组相关/相互依赖的对象,但不需要指明其具体类。
课件例子:
结果分析:创建的不是一个完整产品,而是“产品族”(遵循固定搭配规则的多类产品的实例),得到的结果是:多个不同产品的object,各产品创建过程对client可见,但“搭配”不能改变。
Builder 构造器模式
创建复杂对象,包含多个组成部分。
就比如现在KFC点餐,一个人的餐是由很多东西一起组成的。
但是,client要的不是一堆零散的objects (abstractfactory那样的结果),而是一个完整的产品,client不关心其中的细节组成部分是什么、如何创建。
使用build模式一步步构建这个复杂的物体:
比如下面的例子,把一个pizza分成三个部分,分别设置。
在每个具体的实现类中,这三个方法各不相同:
最后使用时,只需设置好pizza的种类,调用一个constructPizza()方法,Bingo! 构建细节完全对client隐藏。