设计模式-抽象工厂模式(04)

Posted 秋夜雨巷

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式-抽象工厂模式(04)相关的知识,希望对你有一定的参考价值。

定义

  抽象工厂模式(Abstract Factory Pattern)是一种比较常见的模式。英文原话是Provide an interface for creating families of related or dependent objects without specifying their concrete classes。意思是为创建一组相关或相互依赖的对象提供一个接口,而且无需指定它们的具体类。

  抽象工厂模式是工厂方法模式的升级版本。当有多个业务品种需要进行分类时,通过抽象工厂模式产生需要的对象是一种非常好的解决方法。

  抽象工厂模式中的角色与工厂方法类似,也是有四种角色:

    抽象工厂(Abstract Factory)角色:该角色是抽象工厂模式的核心,与应用系统无关,任何创建对象的工厂类必须实现这个接口。

    具体工厂(Concrete Factory)角色:该角色实现了抽象工厂角色所声明的接口,含有选择合适的产品对象的逻辑,并且受到应用程序的调用以创建产品对象。

    抽象产品(Abstract Product)角色:该角色负责定义产品的共性,实现对产品最抽象的定义。

    具体产品(Concrete Product)角色:该角色实现抽象产品角色所声明的接口,抽象工厂模式所创建的任何产品对象都是某个具体产品角色的实例。

抽象工厂模式的优点

  抽象工厂模式是工厂方法模式的进一步抽象,针对的是一族产品。如果产品族中只有一种产品,则抽象工厂模式就退化为工厂方法模式。除了工厂方法模式的优点外,抽象工厂模式还有如下优点:

    1.产品族内的约束为非公开状态,在不同的工厂中,各种产品之间可能具有不同的相互依赖关系,这些依赖关系由工厂封装在其内部,对于工厂的使用者来说这些依赖关系是不可见的。

    2.生产线的扩展非常容易。如果要针对同一产品族建立新的生产线,只需要实现产品族中的所有产品接口并建立新的工厂类即可。

抽象工厂模式的缺点

  抽象工厂模式的最大缺点就是产品族本身的扩展非常困难。如果在产品族中增加一个新的产品类型,则需要修改多个接口,并且会影响已有的工厂类。

抽象工厂模式的使用场景

  抽象工厂模式的使用场景是:当一个对象族(或是一组没有任何关系的对象)都有相同的约束时,可以使用抽象工厂模式。

 

  

以上是关于设计模式-抽象工厂模式(04)的主要内容,如果未能解决你的问题,请参考以下文章

设计模式-抽象工厂模式(04)

设计模式-04抽象工厂模式(Abstract Factory Pattern)

工厂模式,简单工厂模式,抽象工厂模式三者有啥区别

java设计模式--创建型模式

设计模式系列-Builder模式,工厂方法模式和抽象工厂模式

简单工厂模式+工厂方法模式+抽象工厂模式