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 模式中具體實現了創建方法的那些類,它們各自決定將要實例化、初始化和返回哪些對象。
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章