黑马程序员:Java培训、Android培训、iOS培训、.Net培训

              黑马程序员--抽象工厂模式

一、定义

        提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。

二、工厂方法模式类图

    

     1)通常在运行时创建一个ConcreteCreator实例。这一具体的工厂创建具有特定实现的产品对象。为创建不同的产品对象,客户应使用不同的具体工厂。

     2)Creator将产品对象的创建延迟到它的ConcreteCreator子类。

    

三、适用性

    1、一个系统要独立于它的产品的创建、组合和表示时。

    2、一个系统要由多个产品系列中的一个来配置时。

    3、当要强调一系列相关的产品对象的设计以便进行联合使用时。

    4、当你提供一个产品类库,而只想显示它们的接口而不是实现时。

   

四、使用工厂方法模式需要考虑的问题

    1、将具体工厂设置为单件

    2、创建产品系列

          要求每个产品系列都要有一个新的具体工厂子类,即使这些产品系列间的差异很小。如果有多个可能的产品系列,具体工厂也可以使用Prototype模式来实现。

    3、定义可扩展的工厂

          一个方法是使用工厂参数。

写在模式之前:http://www.cnblogs.com/oo-lab/articles/4593399.html

策略模式:http://www.cnblogs.com/oo-lab/articles/4593407.html
迭代器模式:http://www.cnblogs.com/oo-lab/articles/4593416.html
观察者模式:http://www.cnblogs.com/oo-lab/articles/4593418.html
命令模式:http://www.cnblogs.com/oo-lab/articles/4593425.html
模板方法模式:http://www.cnblogs.com/oo-lab/articles/4593428.html
状态模式:http://www.cnblogs.com/oo-lab/articles/4593429.html

单件模式:http://www.cnblogs.com/oo-lab/articles/4593432.html
工厂方法模式:http://www.cnblogs.com/oo-lab/articles/4593435.html
抽象工厂模式:http://www.cnblogs.com/oo-lab/articles/4593440.html
生成器模式:http://www.cnblogs.com/oo-lab/articles/4593444.html