及我們知道,在工廠方法中,每個 creator,只是建立單一的例項,那對於一次要建立n多不同的類例項的情況呢?
及,如果我們要實現這樣的方法呢?:
using system;
using system.collections.generic;
using system.text;
namespace 工廠方法
}抽象工廠,為我們很好的解決了這個問題。
如在乙個農場中,會種植水果和蔬菜。而蔬菜和水果的種類,又因地域的不同而不同,如:南方的農民種植的水果為荔枝,蔬菜為苦瓜,北方的農民種植的水果是紅棗,蔬菜是大白菜。乙個農場的農民,農場主不可能要求他的工人在會種植一樣東西,需要都能夠種植。用程式來解釋,如下:
農民介面:
using system;
using system.collections.generic;
using system.text;
namespace 抽象工廠
}水果介面:
using system;
using system.collections.generic;
using system.text;
namespace 抽象工廠
}蔬菜介面:
using system;
using system.collections.generic;
using system.text;
namespace 抽象工廠
}各種水果類:
using system;
using system.collections.generic;
using system.text;
namespace 抽象工廠
public int 水果生長週期()
public string 生長區域()}}
using system;
using system.collections.generic;
using system.text;
namespace 抽象工廠
public int 水果生長週期()
public string 生長區域()}}
各種蔬菜類:
using system;
using system.collections.generic;
using system.text;
namespace 抽象工廠
public bool 一棵種子是否只長乙個果實()}}
using system;
using system.collections.generic;
using system.text;
namespace 抽象工廠
public bool 一棵種子是否只長乙個果實()}}
農民類:
using system;
using system.collections.generic;
using system.text;
namespace 抽象工廠
public 水果介面 種植水果()}}
using system;
using system.collections.generic;
using system.text;
namespace 抽象工廠
public 水果介面 種植水果()}}
使用的時候:
private void button1_click(object sender, eventargs e)
這樣,南方的農民就可以同時種植南方的水果和南方的蔬菜了,也就解決了乙個農民只能夠種植一種東西的情況,也就是解決了工廠方法的問題。
抽象工廠 和 建造者buileder的不同:
首先,抽象工廠返回的是乙個完完全全的產品物件,客戶端 可以根據這些產品物件,再去組裝出更加複雜的產品物件。
而建造者,返回的不是乙個完整的產品物件,客戶端需要自己在去把產品的各個部件在組裝起來。
如果兩個模式結合起來用,情況可以這樣:
如在乙個遊戲中,如:西山居 開發的 劍俠情緣 來說,一張地圖上,需要建立房子,道路,路標,廣告牌等等,
一張地圖,需要建立這些東西,而這些房子呀什麼的,又有不同的風格,建造者+抽象工廠,就可以能夠滿足這個地圖的建立(呵呵,對於該遊戲到底是怎麼弄的,我是不知道,自己亂想的)
上面的程式,用的中文表示,呵呵,一是測試vs裡面能夠用中文不,二是這樣看起來容易點。
設計模式之工廠 抽象工廠
一 應用場景 工廠模式應用非常廣泛,意在抽象出一層專職管理物件產生以及物件間的關係,讓我們能夠專注於業務開發 1.不用去寫許許多多的new方法,替換實現類還得挨個修改。2.類中不涉及實現類,物件間只存在介面級別的耦合,客戶端呼叫注入實現類即可。由於工廠模式變種非常多,這裡只講一下常用的簡單工廠和抽象...
抽象工廠模式 設計模式3之抽象工廠模式
工廠方法模式中工廠只負責同類產品的生產。比如電視機工廠不應該生產汽車。然而現實生活中有很多綜合型的工廠,比如有些電視工廠不僅生產電視機,還會生產與之配套的機頂盒。那麼抽象工廠模式隨之誕生,這種模式將考慮多種型別產品的生產。我們總結下 工廠方法模式只考慮成產同一等級級的產品抽象方法模式考慮生產多等級的...
設計模式之抽象工廠
首先非常感謝睡仔 工廠模式,我的所有工廠模式的理解均來自於他的部落格思想。abstractfactory.h 設計模式之抽象工廠,此方式是在工廠方法的基礎上進一步抽象的結果 理解 世事多變,隨著時間的推移,走過的地方越來越多,你天南海北的朋友也越來越多。你發現菜原來還分了許多菜系,魯菜 粵菜 湘菜等...