首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

OO设计方式-工厂方法模式

2012-10-10 
OO设计模式-工厂方法模式最近在看OO设计模式,觉得设计模式还是挺有用的。现在只是对设计模式的诸多特性进行

OO设计模式-工厂方法模式
      最近在看OO设计模式,觉得设计模式还是挺有用的。现在只是对设计模式的诸多特性进行记录,呵呵,这不是我的发明,算是对学习的笔记吧。以后会见GOF23种设计模式逐一进行记录和分析,废话少说,先说工厂方法模式:

1、理解:
    将对象的具体创建过程剥离,客户端无需知道对象是怎么创建的,只需要使用对象。封装对象的创建过程,将散落在系统各个角落的判断逻辑给集中起来。
2、类图:


3、设计对象:
    抽象产品: 负责定义具体产品的功能集
    具体产品: 负责实现抽象产品的约定
    创建者: 负责依据不同的规则创建具体的产品
    客户端:调用创建者创建具体产品

4、变体:  
    创建者和具体产品合并,创建对象的方法变成静态方法,具体产品的构造方法为私有方法,便演变成单例模式

5、优点和用途:
     符合面向接口编程原则,客户端无需关注具体创建产品的具体类型,只需要通过创建者创建产品,使用就OK了。具体的创建逻辑交由创建者管理。
     符合开闭原则,新增一个具体产品,对原先产品的逻辑没有影响,对扩展开发对修改关闭,但要使用新产品的客户端必须修改代码适配
     符合将变化的东西集中起来,避免散落在系统的各个角落,新增具体产品,只需要将创建者的创建逻辑修改,而不会波及到具体产品的使用和运行。

6、缺点:
     当产品类型过多的时候,便会造成每个抽象产品需要一个创建者,造成类爆炸。为了避免这种现象发生,可以将创建者和抽象产品合并,在多层次的产品结构中,可以使用抽象工厂方法模式来解决这个问题(下一节会讲到)。

7、应用:
    JDK 中很多地方用到。如格式日期的SimpleDataFormat、如字节码加载器、很多项目的工具类。

热点排行