Refactoring to Patterns 读书笔记(二)

用 Factory 模式封装具体类

对于在一个包中实现了同一接口的具体类,不必让客户代码来直接地实例化这些实现类,应该创建一个 Factory 类来负担这样的责任。这样做的好处是:
1. 遵守了“面向接口编程,而非面向实现编程”的原则。
2. 减轻了代码中的“概念负担”(conceptual weight)。使用 Factory 类屏蔽有关包内实现类的细节,客户代码就只需要了解接口和 Factory 类的知识。
3. Factory 类可以提供“意图显明”的 Create Methods,从而简化了类的构造。

Factory 模式是非常强大的,可以让我们只依赖于抽象接口,就创建出具体类的实例来。不过,和大部分设计模式一样,Factory 模式也会使代码变得复杂起来。例如,一套基本完整应用 Factory 模式的代码,就需要2个接口类和2个实现类。所以,一般在程序设计的初期,没有必要应用 Factory 模式。只有在某些需要的情况下,才有必要使用该模式。例如,如果使用了 Proxy 模式,就有可能需要使用 Factory 来创建持久化对象。

利用 Factory Method 模式进行多态创建(polymorphic creation)

Factory Method 模式又被成为 Polymorphic Factory 模式。在该模式中,父类定义创建对象实例的公共接口方法,而创建对象实例的具体工作,则延迟到子类中完成,这样子类就能各自决定应该创建哪一个对象。

应用 Factory Method 模式,需要以下三个元素:
1. Factory Method 实现类所要实例化和返回的类型。
2. 实现了上面所说的那个类型的具体类。
3. Factory Method 模式中具体实现了创建方法的那些类,它们各自决定将要实例化、初始化和返回哪些对象。
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章