免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
設(shè)計模式之創(chuàng)建型
1、Factory模式

圖1 Factory模式結(jié)構(gòu)示意圖

圖1所以的Factory模式經(jīng)常在系統(tǒng)開發(fā)中用到,但是這并不是Factory模式的最大威力所在(因為這可以通過其他方式解決這個問題)。Factory模式不單是提供了創(chuàng)建對象的接口,其最重要的是延遲了子類的實例化(第二個問題),以下是這種情況的一個Factory的結(jié)構(gòu)示意圖:
 

圖2:Factory模式結(jié)構(gòu)示意圖

圖2中關(guān)鍵中Factory模式的應(yīng)用并不是只是為了封裝對象的創(chuàng)建,而是要把對象的創(chuàng)建放到子類中實現(xiàn):Factory中只是提供了對象創(chuàng)建的接口,其實現(xiàn)將放在Factory的子類ConcreteFactory中進行。這是圖2和圖1的區(qū)別所在。
 Factory模式在實際開發(fā)中應(yīng)用非常廣泛,面向?qū)ο蟮南到y(tǒng)經(jīng)常面臨著對象創(chuàng)建問題:要創(chuàng)建的類實在是太多了。而Factory提供的創(chuàng)建對象的接口封裝(第一個功能),以及其將類的實例化推遲到子類(第二個功能)都部分地解決了實際問題。
 
2、AbstactFactory模式
AbstractFactory模式就是用來解決這類問題的:要創(chuàng)建一組相關(guān)或者相互依賴的對象。

AbstractFactory Pattern結(jié)構(gòu)圖
AbstractFactory模式關(guān)鍵就是將這一組對象的創(chuàng)建封裝到一個用于創(chuàng)建對象的類(ConcreteFactory)中,維護這樣一個創(chuàng)建類總比維護n多相關(guān)對象的創(chuàng)建過程要簡單的多。
AbstractFactory模式和Factory模式的區(qū)別是初學(xué)(使用)設(shè)計模式時候的一個容易引起困惑的地方。實際上,AbstractFactory模式是為創(chuàng)建一組(有多類)相關(guān)或依賴的對象提供創(chuàng)建接口,而Factory模式正如我在相應(yīng)的文檔中分析的是為一類對象提供創(chuàng)建接口或延遲對象的創(chuàng)建到子類中實現(xiàn)。并且可以看到,AbstractFactory模式通常都是使用Factory模式實現(xiàn)(ConcreteFactory1)。
 
3、Singleton模式
 

Singleton Pattern結(jié)構(gòu)圖

在Singleton模式的結(jié)構(gòu)圖中可以看到,我們通過維護一個static的成員變量來記錄這個唯一的對象實例。通過提供一個staitc的接口instance來獲得這個唯一的實例。
Singleton模式經(jīng)常和Factory(AbstractFactory)模式在一起使用,因為系統(tǒng)中工廠對象一般來說只要一個,筆者在開發(fā)Visual CMCS的時候,語義分析過程(以及其他過程)中都用到工廠模式來創(chuàng)建對象(對象實在是太多了),這里的工廠對象實現(xiàn)就是同時是一個Singleton模式的實例,因為系統(tǒng)我們就只要一個工廠來創(chuàng)建對象就可以了。
 
4、Builder模式 

Builder Pattern結(jié)構(gòu)圖

Builder模式的關(guān)鍵是其中的Director對象并不直接返回對象,而是通過一步步(BuildPartA,BuildPartB,BuildPartC)來一步步進行對象的創(chuàng)建。當然這里Director可以提供一個默認的返回對象的接口(即返回通用的復(fù)雜對象的創(chuàng)建,即不指定或者特定唯一指定BuildPart中的參數(shù))。
Builder模式和AbstractFactory模式在功能上很相似,因為都是用來創(chuàng)建大的復(fù)雜的對象,它們的區(qū)別是:Builder模式強調(diào)的是一步步創(chuàng)建對象,并通過相同的創(chuàng)建過程可以獲得不同的結(jié)果對象,一般來說Builder模式中對象不是直接返回的。而在AbstractFactory模式中對象是直接返回的,AbstractFactory模式強調(diào)的是為創(chuàng)建多個相互依賴的對象提供一個同一的接口。
 
5、Prototype模式

Prototype Pattern結(jié)構(gòu)圖

Prototype模式提供了一個通過已存在對象進行新對象創(chuàng)建的接口(Clone),Clone()實現(xiàn)和具體的實現(xiàn)語言相關(guān),在C++中我們將通過拷貝構(gòu)造函數(shù)實現(xiàn)之。
Prototype模式通過復(fù)制原型(Prototype)而獲得新對象創(chuàng)建的功能,這里Prototype本身就是“對象工廠”(因為能夠生產(chǎn)對象),實際上Prototype模式和Builder模式、AbstractFactory模式都是通過一個類(對象實例)來專門負責對象的創(chuàng)建工作(工廠對象),它們之間的區(qū)別是:Builder模式重在復(fù)雜對象的一步步創(chuàng)建(并不直接返回對象),AbstractFactory模式重在產(chǎn)生多個相互依賴類的對象,而Prototype模式重在從自身復(fù)制自己創(chuàng)建新類。
 
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
設(shè)計模式區(qū)別(一)
設(shè)計模式學(xué)習(xí)筆記(十四)——創(chuàng)建型模式總結(jié)
軟件架構(gòu)設(shè)計系列之十二(設(shè)計模式)
FEM之在求解器中使用設(shè)計模式(4)---Builder模式
從Java類庫看設(shè)計模式
筆記--設(shè)計模式精解c++-GoF 23 種設(shè)計模式解析
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服