設計模式討論之abstract factory篇
設計模式討論之abstract factory篇
有人說過,“不寫1M行程式碼,不能看設計模式。”
但似乎設計模式並非那麼神奇,下面用筆者的
一點粗淺認識,討論一下abstract factory設計
模式的主要部分。
首先,為什麼要用設計模式?GOF的設計模式
主要是用來減小耦合和提高複用的。而物件導向
的主要原則就是能private的,就不要protected;
能protected,就不要public。儘量不要把一些
重要的細節暴漏給自己的客戶類,以免不必要的
出現錯誤。當然這是從繼承的方面來說;而從
多型的方面來說,就是隻給客戶類暴漏抽象的基類
的介面,而這裡所指的介面就是基類的公有的部分。
客戶類每多知道抽象基類的具體子類的型別,也就多了
一分耦合。而僅提供抽象基類的介面給外界,
提高了抽象層次,也就是通用性,也就是複用性。
設計模式提倡的是:“優先使用組合,而不是繼承”。
但abstract factory模式中,並未使用組合,而只是
依賴(例項化),也就是說abstract factory模式的
內部,仍然有不小的耦合。
Abstract factory主要的好處是,客戶程式碼不僅不知道,
工廠類的具體型別,而且也不知道具體的產品型別,
具體的產品型別資訊被封裝到具體的工廠中了。所以,
客戶類只操縱工廠介面和產品介面,不知道具體的工廠產生
產品的實現細節,建立的複雜性被封裝了。
設計模式的主要目標是“把變化的和不變的分離,提高彈性”。
但在abstract factory中,彈性是有限的。即你可以從
抽象基類派生出不同的具體工廠實現生產不同的具體產品,
但所有這些都受限於你的介面,如果產品的改變非常之大,
以至於你的介面變化了,那麼客戶類的程式碼也得隨之改變。
也就是說,減小耦合失敗了。
有人說過,“不寫1M行程式碼,不能看設計模式。”
但似乎設計模式並非那麼神奇,下面用筆者的
一點粗淺認識,討論一下abstract factory設計
模式的主要部分。
首先,為什麼要用設計模式?GOF的設計模式
主要是用來減小耦合和提高複用的。而物件導向
的主要原則就是能private的,就不要protected;
能protected,就不要public。儘量不要把一些
重要的細節暴漏給自己的客戶類,以免不必要的
出現錯誤。當然這是從繼承的方面來說;而從
多型的方面來說,就是隻給客戶類暴漏抽象的基類
的介面,而這裡所指的介面就是基類的公有的部分。
客戶類每多知道抽象基類的具體子類的型別,也就多了
一分耦合。而僅提供抽象基類的介面給外界,
提高了抽象層次,也就是通用性,也就是複用性。
設計模式提倡的是:“優先使用組合,而不是繼承”。
但abstract factory模式中,並未使用組合,而只是
依賴(例項化),也就是說abstract factory模式的
內部,仍然有不小的耦合。
Abstract factory主要的好處是,客戶程式碼不僅不知道,
工廠類的具體型別,而且也不知道具體的產品型別,
具體的產品型別資訊被封裝到具體的工廠中了。所以,
客戶類只操縱工廠介面和產品介面,不知道具體的工廠產生
產品的實現細節,建立的複雜性被封裝了。
設計模式的主要目標是“把變化的和不變的分離,提高彈性”。
但在abstract factory中,彈性是有限的。即你可以從
抽象基類派生出不同的具體工廠實現生產不同的具體產品,
但所有這些都受限於你的介面,如果產品的改變非常之大,
以至於你的介面變化了,那麼客戶類的程式碼也得隨之改變。
也就是說,減小耦合失敗了。
相關文章
- 設計模式討論之abstract factory篇 (轉)設計模式
- Delphi設計模式-Abstract Factory (轉)設計模式
- JAVA設計模式之 抽象工廠模式【Abstract Factory Pattern】Java設計模式抽象
- 設計模式--抽象工廠模式(Abstract Factory Pattern)設計模式抽象
- 設計模式、用Delphi描述-->Abstract Factory模式 (轉)設計模式
- 設計模式-抽象工廠模式(Abstract Factory Pattern)設計模式抽象
- 設計模式實戰 – 抽象工廠模式(Abstract Factory Pattern)設計模式抽象
- 設計模式實戰 - 抽象工廠模式(Abstract Factory Pattern)設計模式抽象
- 【圖解設計模式系列】The Abstract Factory Pattern: 抽象工廠模式圖解設計模式抽象
- 設計模式的征途—4.抽象工廠(Abstract Factory)模式設計模式抽象
- 設計模式(Design Patterns)筆記之一:Abstract Factory (轉)設計模式筆記
- Java設計模式之工廠模式(Factory)Java設計模式
- 設計模式之工廠方法模式(FACTORY METHOD)設計模式
- 我所理解的設計模式(C++實現)——抽象工廠模式(Abstract Factory Pattern)設計模式C++抽象
- Abstract Factory(抽象工廠)——物件建立型模式抽象物件模式
- Abstract Factory + Template = BuilderUI
- 討論設計模式和00思想設計模式
- 奇幻RPG(人物構建 與 Abstract Factory模式)模式
- 設計模式系列之工廠模式三兄弟(Factory Pattern)設計模式
- JAVA設計模式之 工廠方法模式【Factory Method Pattern】Java設計模式
- JAVA設計模式之 簡單工廠模式【Simple Factory Pattern】Java設計模式
- GoF設計模式新手討論專用帖Go設計模式
- 《設計模式》 - 2. 工廠模式( Factory )設計模式
- 設計模式--工廠模式Factory(建立型)設計模式
- 設計模式總結(理論篇)設計模式
- State設計模式上篇(理論篇)設計模式
- 設計模式之概述篇設計模式
- J2EE相關設計模式討論設計模式
- 設計模式--工廠方法模式(Factory Method Pattern)設計模式
- Scala 與設計模式(四):Factory 工廠模式設計模式
- 設計模式、用Delphi描述-->Factory Method模式 (轉)設計模式
- 再來一篇不錯的文章,討論Interface與Abstract的關係
- Java設計模式之開篇Java設計模式
- 設計模式(Design Patterns)工廠方法模式(Factory Method)設計模式
- C#設計模式系列:工廠方法模式(Factory Method)C#設計模式
- 設計模式筆記:簡單工廠模式(Simple Factory)設計模式筆記
- 表結構設計討論
- PHP設計模式(一)簡單工廠模式 (Simple Factory For PHP)PHP設計模式