設計模式之抽象工廠

2021-06-22 23:05:04 字數 802 閱讀 5971

學習了抽象工廠模式,感覺又比工廠方法更加先進了一些,它提供乙個建立一系列相關或者相互依賴物件的介面,而無需指定它們的具體類。下面是結構圖:

舉乙個具體的例子:需要生產一種杯子,材質有塑料和玻璃,外觀有無蓋和有蓋。這時用簡單工廠則只能生產出來杯子而沒有材質外觀之分,用工廠方法模式則滿足不了自主選擇材質和外觀的需求。抽象工廠類圖為:

抽象出來塑料杯子和玻璃杯子兩個類,則可以根據需要無蓋還是有蓋靈活選擇。假如又要增加乙個木頭杯子,則新增乙個木頭杯子類,便可以滿足需求。

但是,如果要增加了一種可活動的杯蓋呢。如果改了杯子工廠類,則需要改動的類太多,不滿足開放-封閉原則。此時就可以把生產無蓋和有蓋的生產線再加上新加的活動蓋的生產線放到乙個類裡面。用乙個簡單工廠來實現。

但是這樣就有了杯子工廠的switch 無蓋、有蓋。如果加了活動蓋,原來只需要加乙個活動蓋的類即可,現在就得用switch case來選擇,這樣就比較麻煩,所以就應用到了反射技術——外觀=assembly.load("程式集名稱").createinstance("命名空間.類名稱"),這樣就把「外觀」變成了字串,能用變數來處理了。反射技術是用來去除switch或者if判斷。用到簡單工廠就可以考慮反射技術,解除分支判斷帶來的耦合。

設計模式之工廠 抽象工廠

一 應用場景 工廠模式應用非常廣泛,意在抽象出一層專職管理物件產生以及物件間的關係,讓我們能夠專注於業務開發 1.不用去寫許許多多的new方法,替換實現類還得挨個修改。2.類中不涉及實現類,物件間只存在介面級別的耦合,客戶端呼叫注入實現類即可。由於工廠模式變種非常多,這裡只講一下常用的簡單工廠和抽象...

抽象工廠模式 設計模式3之抽象工廠模式

工廠方法模式中工廠只負責同類產品的生產。比如電視機工廠不應該生產汽車。然而現實生活中有很多綜合型的工廠,比如有些電視工廠不僅生產電視機,還會生產與之配套的機頂盒。那麼抽象工廠模式隨之誕生,這種模式將考慮多種型別產品的生產。我們總結下 工廠方法模式只考慮成產同一等級級的產品抽象方法模式考慮生產多等級的...

設計模式 之 抽象工廠

及我們知道,在工廠方法中,每個 creator,只是建立單一的例項,那對於一次要建立n多不同的類例項的情況呢?及,如果我們要實現這樣的方法呢?using system using system.collections.generic using system.text namespace 工廠方法 ...