學習了抽象工廠模式,我把自己所理解的抽象工廠模式拿出來和大家分享。
1.首先什麼是抽象工廠模式?
抽象工廠模式是所有形態的工廠模式中最為抽象和最具一般性的一種形態。抽象工廠模式是指當有多個抽象角色時,使用的一種工廠模式。抽象工廠模式可以向客戶端提供乙個介面,使客戶端在不必指定產品的具體的情況下,建立多個產品族中的產品物件。根據lsp原則,任何接受父型別的地方,都應當能夠接受子型別。因此,實際上系統所需要的,僅僅是型別與這些抽象產品角色相同的一些例項,而不是這些抽象產品的例項。換言之,也就是這些抽象產品的具體子類的例項。工廠類負責建立抽象產品的具體子類的例項。
2.抽象工廠模式的結構?
1) 抽象工廠(abstract factory)角色:擔任這個角色的是工廠方法模式的核心,它是與應用系統商業邏輯無關的。
3) 抽象產品(abstract product)角色:擔任這個角色的類是工廠方法模式所建立的物件的父類,或它們共同擁有的介面。
4) 具體產品(concrete product)角色:抽象工廠模式所建立的任何產品物件都是某乙個具體產品類的例項。這是客戶端最終需要的東西,其內部一定充滿了應用系統的商業邏輯
3.在什麼情況下使用抽象工廠模式?
1) 乙個系統不應當依賴於產品類例項如何被建立、組合和表達的細節,這對於所有形態的工廠模式都是重要的。
2)這個系統有多於乙個的產品族,而系統只消費其中某一產品族。
3)同屬於同乙個產品族的產品是在一起使用的,這一約束必須在系統的設計中體現出來。
4)系統提供乙個產品類的庫,所有的產品以同樣的介面出現,從而使客戶端不依賴於實現。
4.例項來說明:
以個人計算機來說明:
產品族有兩個 乙個是pc(imb 系列)乙個是mac(macintosh 系列) 電腦裡面又有產品,cpu,ram等。pccpu與pcram都在pc機上,maccpu,macrammac機器上。這樣中約束條件要在系統設計中體現出來,這樣就滿足了3裡面的條件二和三。
為了讓思路更加的清晰,容易初學者 我們可以 按照抽象工廠模式的結構來做。
1)建立乙個抽象工廠類。
2) 建立具體工廠類,這裡有兩個具體的工廠類 ,分別pcfactory,macfactory
3) 建立抽象產品類 cpu,ram
4) 建立具體產品類,也有分別有兩個,它們是pccpu,pcram,和maccpu,macram.
在此抽象工廠模式實現了。
最後 測試類:
當然還有測試結果:
pc cpu.....
pc arm....
mac cpu....
mac ram...
5.總結:
通過上面的例子抽象工廠模式中可以理解為: 1)乙個抽象工廠類,派生出多個具體的工廠類,比如pcfactory,macfactory;
2) 有多個抽象產品類(如:cpu,arm),並且每個抽象產品類可以派生出多個具體產品類(pccpu,maccpu).
3) 每個具體工廠類都可以建立多個具體產品類的例項。
抽象工廠模式的優缺點:
優點:它分離了具體的類,它使得易於交換產品系列。
缺點:難以支援新種類的產品。
6.還有我們也可以像spring管理bean一樣,對factory進行集中管理。
2)新建乙個xmlbean
4)最後測試
5)結果
pc cpu.....
pc arm....
mac cpu....
mac ram...
最後把factory集中管理起來成功。
抽象工廠模式解析例子
抽象工廠模式中的有以下的四種角色 抽象工廠 abstract factory 角色 擔任這個角色的是工廠方法模式的核心,它是與應用系統商業邏輯無關的。抽象產品 abstract product 角色 擔任這個角色的類是工廠方法模式所建立的物件的父類,或它們共同擁有的介面。具體產品 concrete ...
抽象工廠模式解析例子
size large 抽象工廠模式中的有以下的四種角色 抽象工廠 abstract factory 角色 擔任這個角色的是工廠方法模式的核心,它是與應用系統商業邏輯無關的。抽象產品 abstract product 角色 擔任這個角色的類是工廠方法模式所建立的物件的父類,或它們共同擁有的介面。具體產...
抽象工廠模式 抽象工廠模式
抽象工廠模式其實是圍繞了乙個超級工廠建立其他的工廠 可參考工廠模式 這個超級工廠又可以想像成是其他工廠的工廠,這種設計模式是一種建立型模式。在抽象工廠模式中,介面是負責建立乙個相關物件的工廠,不需要顯式指出其類。每個生成的工廠都能按照工廠模式提供物件。意圖提供乙個建立一系列相關或相互依賴物件的介面,...