读《大话设计模式》之工厂方法模式

2017-10-22  本文已影响14人  梦半觉

一、模式概述:

定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法是一个类的实例化延迟到其子类。

UML图:

工厂方法模式结构图 工厂方法模式实现

这样整个工厂和具体的产品都没有修改的变化,只有扩展的变化,这就完全符合了开闭原则。

二、模式优缺点:

优点:

克服了简单工厂违背开放-封闭原则的缺点,又保留了封装对象创建过程的优点,降低客户端和工厂的耦合性,所以说“工厂模式”是“简单工厂模式”的进一步抽象和推广。

缺点:

每增加一个产品,相应的也要增加一个子工厂,加大了额外的开发量。

三、模式适用场景:

四、模式总结:

对简单工厂模式的进一步抽象和封装。在简单工厂的基础上多抽象了一个工厂父类,用来生成不同的工厂类。工厂方法把简单工厂的内部逻辑判断迁移到了客户端来进行。
使用工厂方法模式足以应付我们可能遇到的大部分业务需求。但是当产品种类非常多时,就会出现大量的与之对应的工厂类,这不应该是我们所希望的。所以我建议在这种情况下使用简单工厂模式与工厂方法模式相结合的方式来减少工厂类:即对于产品树上类似的种类(一般是树的叶子中互为兄弟的)使用简单工厂模式来实现。
当然特殊的情况,就要特殊对待了:对于系统中存在不同的产品树,而且产品树上存在产品族(下一节将解释这个名词)。那么这种情况下就可能可以使用抽象工厂模式了。

上一篇 下一篇

猜你喜欢

热点阅读