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

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

1、理解:
[b]将对象的具体创建过程剥离,客户端无需知道对象是怎么创建的,[/b]只需要使用对象。封装对象的创建过程,将散落在系统各个角落的判断逻辑给集中起来。
2、类图:
[img]http://dl.iteye.com/upload/attachment/576582/b1612732-e148-336b-9855-6c70d5cf2d38.jpg[/img]

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值