码迷,mamicode.com
首页 > 其他好文 > 详细

抽象工厂模式

时间:2020-06-20 19:16:37      阅读:66      评论:0      收藏:0      [点我收藏+]

标签:集合   creating   abs   inter   str   ctp   工厂   crete   ctf   

名称:

 

抽象工厂模式(Abstract Factory Pattern)

 

问题:

Provide an interface for creating families of related or dependent objects without specifying their concrete classes.

为创建一组相关或相互依赖的对象提供一个接口,而且无须指定它们的具体类。

 

解决方案:

    

1、 模式的参与者

    1、AbstractFactory

    -声明一个创建抽象产品对象的操作接口。

    2、ConcreteFactory

    -实现创建具体产品对象的操作

    3、AbstractProduct

    -为一类产品对象声明一个接口。

    4、ConcreteProduct

    -定义一个将被相应的具体工厂创建的产品对象。

    -实现AbstractProduct接口。

    5、Client

    -仅使用由AbstractFactory和AbstractProduct类声明的接口

2.实现方式

public abstract class AbstractFactory {
     
     public abstract AbstractProductA createProductA(); 

     public abstract AbstractProductB createProductB();
}

 

优点和缺点:

1、分离了具体的类。

    客户与类的实现分离。客户通过它们的抽象接口操纵实例。产品的类名也在具体工厂的实现中被分离;它们不出现在客户代码。

2、它使得易于交换产品系列。

    只需要改变具体的工厂就可以使用不同的产品配置。

3、它有利于产品的一致性。

    一个应用一次只能使用同一个系列中的对象。

4、难以支持新种类的产品。 

     AbstractFactory接口确定了可以被创建的产品集合。支持新种类的产品就需要扩展该工厂接口,这将涉及Abstractory类及其所有子类的改变。

 

参考资料

《设计模式:可复用面向对象软件的基础》

 

抽象工厂模式

标签:集合   creating   abs   inter   str   ctp   工厂   crete   ctf   

原文地址:https://www.cnblogs.com/diameter/p/13169895.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!