軟體架構師需要評審概要設計並檢查概要設計是否落實,所以設計模式是重點內容之一。
由於是演示程式,不考慮記憶體洩露
現實中,每個公司的產品,都封裝成dll或exe中,其他公司是無法檢視和修改的。
公司一定義了類庫的標準,公司二和公司三,分別實現了此類庫。公司四建立乙個產品,公司五在公司四的產品上二次開發。
公司四2023年使用公司二的類庫,公司四2023年使用公司三的類庫,這對公司五沒有任何影響。
使用vc6建立乙個基於對話方塊的程式test1,增加兩個按鈕,並關聯響應函式,主要**如下:
//第乙個公司的產品,定義了介面
//iunit
class iunit
;//itext 文字介面類
class itext : public iunit
;//文字類的簡單實現
class ctext : public itext
;void ctext::settext(const char* ptext)
//工廠介面類
class ifactory
;//第二個公司的實現
class ctext1 : public ctext
;void ctext1::draw(cdc& dc)
class cfactory1 : public ifactory
;itext* cfactory1::createtext()
//第三個公司的實現
class ctext2 : public ctext
;void ctext2::draw(cdc& dc)
class cfactory2 : public ifactory
;itext* cfactory2::createtext()
//第四個公司(主程式的實現方)
extern iunit* init(ifactory& factory);
void ctest1dlg::onbutton1()
void ctest1dlg::onbutton2()
//第五個公司的實現
iunit* init(ifactory& factory)
//第六個公司返回的可能是logo(本例項中沒實現)而不是文字
公司一類圖:
公司二(三)類圖
公司四類圖
公司五類圖
從以上類圖可以看出:
公司二(公司三)只需要關心公司一
公司四隻需要關心公司一和公司二(三)
公司五隻需要要關係公司一
設計模式之工廠 抽象工廠
一 應用場景 工廠模式應用非常廣泛,意在抽象出一層專職管理物件產生以及物件間的關係,讓我們能夠專注於業務開發 1.不用去寫許許多多的new方法,替換實現類還得挨個修改。2.類中不涉及實現類,物件間只存在介面級別的耦合,客戶端呼叫注入實現類即可。由於工廠模式變種非常多,這裡只講一下常用的簡單工廠和抽象...
抽象工廠模式 設計模式3之抽象工廠模式
工廠方法模式中工廠只負責同類產品的生產。比如電視機工廠不應該生產汽車。然而現實生活中有很多綜合型的工廠,比如有些電視工廠不僅生產電視機,還會生產與之配套的機頂盒。那麼抽象工廠模式隨之誕生,這種模式將考慮多種型別產品的生產。我們總結下 工廠方法模式只考慮成產同一等級級的產品抽象方法模式考慮生產多等級的...
設計模式 之 抽象工廠
及我們知道,在工廠方法中,每個 creator,只是建立單一的例項,那對於一次要建立n多不同的類例項的情況呢?及,如果我們要實現這樣的方法呢?using system using system.collections.generic using system.text namespace 工廠方法 ...