《Java与模式》学习笔记——Abstract Factory
Posted brooksychen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《Java与模式》学习笔记——Abstract Factory相关的知识,希望对你有一定的参考价值。
抽象工厂(Abstract Factory)模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。
抽象工厂模式与工厂方法模式的最大区别就在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则需要面对多个产品等级结构。
为了方便引进抽象工厂模式,特地引进一个新的概念:产品族(Product Family)。所谓产品族,是指位于不同产品等级结构中,功能相关联的产品组成的家族。
抽象工厂模式的结构图如下:
源代码:
public
interface
Creator
...
public ProductA factoryA();
public ProductB factoryB();


public
class
ConcreteCreator1
implements
Creator
...

public ProductA factoryA() ...
return new ProductA1();

public ProductB factoryB() ...
return new ProductB1();

public
class
ConcreteCreator2
implements
Creator
...

public ProductA factoryA() ...
return new ProductA2();

public ProductB factoryB() ...
return new ProductB2();

public
interface
ProductA
...


public
class
ProductA1
implements
ProductA
...

public ProductA1() ...

public
class
ProductA2
implements
ProductA
...

public ProductA2() ...

public
interface
ProductB
...


public
class
ProductB1
implements
ProductB
...

public ProductB1() ...

public
class
ProductB2
implements
ProductB
...

public ProductB2() ...
在以下情况下应当考虑使用抽象工厂模式:
1. 一个系统不应当依赖于产品类实例如何被创建、组合和表达的细节,这对于所有形态的工厂模式都是重要的。
2. 这个系统的产品有多于一个的产品族,而系统只消费其中某一族的产品(这一条是抽象工厂模式的原始用意)。
3. 同属于同一个产品族的产品是在一起使用的,这一约束必须在系统的设计中体现出来。
4. 系统提供一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖于实现。
当系统中的产品族增加时,抽象工厂模式是支持“开-闭”原则的;但对于产品等级结构的增加,抽象工厂模式不支持“开-闭”原则。以上是关于《Java与模式》学习笔记——Abstract Factory的主要内容,如果未能解决你的问题,请参考以下文章
《Java与模式》学习笔记——Abstract Factory
《java JDK7 学习笔记》之接口与多态
Day 09Java基础学习笔记
Spring学习笔记——Spring中lazy-init与abstract具体解释
Java入门学习笔记——第十二天 接口与实现
《JAVA学习笔记(14-10---14-11抽象类)》