在軟體系統中,往往面臨著一系列相互依賴物件的建立工作,由於需求變化,往往存在更多系列物件的建立工作
如何應對這種變化,避免客戶程式和多系列物件建立工作的緊耦合?
考慮這樣一種情況,使用者類需要建立大量的widget,page,widget和page有許多態別
//產品
class iwidget ;
//page依賴於widget建立
class ipage ;
//a型別的widget
class widgeta :public iwidget {};
//a型別的page
class pagea :public ipage ;
//b型別的widget
class widgetb :public iwidget {};
//b型別的page
class pageb :public ipage ;
//使用者
class user
};//工廠
class ifacorywidget;
class factorywidget:public ifacorywidget ;
class ifacorypage ;
class factorypage:public ifacorypage ;
上述工廠方法模式解決了我們的問題,但但有一點,widget和page是相互依賴的,widgeta和pageb不能配合使用,此時若user類的widget工廠和page工廠指標型別不一致,則會發生錯誤,因為widgeth和page是依賴的,配合使用的
思考:我們知道良好設計**的規範是高內聚低耦合,widget和page如此依賴,是不是可以內聚呢?
在前述工廠方法中,為了降低耦合增加了大量的類,所謂「分」,此時我們是夠可以「合」呢?
設計模式之工廠 抽象工廠
一 應用場景 工廠模式應用非常廣泛,意在抽象出一層專職管理物件產生以及物件間的關係,讓我們能夠專注於業務開發 1.不用去寫許許多多的new方法,替換實現類還得挨個修改。2.類中不涉及實現類,物件間只存在介面級別的耦合,客戶端呼叫注入實現類即可。由於工廠模式變種非常多,這裡只講一下常用的簡單工廠和抽象...
抽象工廠模式 設計模式3之抽象工廠模式
工廠方法模式中工廠只負責同類產品的生產。比如電視機工廠不應該生產汽車。然而現實生活中有很多綜合型的工廠,比如有些電視工廠不僅生產電視機,還會生產與之配套的機頂盒。那麼抽象工廠模式隨之誕生,這種模式將考慮多種型別產品的生產。我們總結下 工廠方法模式只考慮成產同一等級級的產品抽象方法模式考慮生產多等級的...
設計模式 之 抽象工廠
及我們知道,在工廠方法中,每個 creator,只是建立單一的例項,那對於一次要建立n多不同的類例項的情況呢?及,如果我們要實現這樣的方法呢?using system using system.collections.generic using system.text namespace 工廠方法 ...