abstract Factory pattern

Posted 努力追上曾经的自己

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了abstract Factory pattern相关的知识,希望对你有一定的参考价值。

1,注意静态工厂(简单工厂模式)、工厂方法、抽象工厂的区别

  静态工厂是根据客户端传入的参数,使用工厂类来创建相应的产品接口的具体实现子类对象。比如,需要需要创建一个工具类,该工具类是为了调用外部系统,但外部系统的版本有差异,需要根据不同版本的外部系统,生成相应的工具类。这个时候如果外部系统不同版本的数量比较少,此时使用静态工厂是合适的。

  注意静态工厂模式只有一个工厂类。

 

  工厂方法是每一个产品都有一个工厂类,存在一个工厂类父类,客户端直接创建具体的工厂类,然后生产相应的产品。工厂方法把简单工厂的内部逻辑判断移到了客户端进行,由客户端决定使用哪一个工厂类。

  工厂方法只有一个抽象产品类,所以具体的工厂类只能生产一种产品。

 

  抽象工厂模式在工厂方法模式下进一步扩展以实现一般化,抽象工厂模式中具有多个抽象产品类,这样具体工厂就可以生产多个产品。客户端通过生产具体工厂对象,然后调用工厂对象的不同方法来实现生产不同的产品。工厂方法时具体工厂类对应具体一种产品类,而抽象工厂模式是具体工厂类的某个函数对应一种具体的产品类

应用场景  

  第一种情况是对于某个产品,调用者清楚地知道应该使用哪个具体工厂服务,实例化该具体工厂,生产出具体的产品来。Java Collection中的iterator() 方法即属于这种情况。
  第二种情况,只是需要一种产品,而不想知道也不需要知道究竟是哪个工厂为生产的,即最终选用哪个具体工厂的决定权在生产者一方,它们根据当前系统的情况来实例化一个具体的工厂返回给使用者,而这个决策过程这对于使用者来说是透明的。

关于这三者的更多信息见:

http://blog.csdn.net/sinat_35512245/article/details/54890711

 

抽象工厂的实例请参考:

http://www.cnblogs.com/lilin0719/p/5313886.html

  

以上是关于abstract Factory pattern的主要内容,如果未能解决你的问题,请参考以下文章

抽象工厂模式-Abstract Factory

抽象工厂(Abstract Factory)

Abstract Factory抽线工厂

Abstract Factory

抽象工厂(Abstract Factory)

创建型模式:抽象工厂(Abstract Factory)