日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

設計模式之創(chuàng)建型

 sun317 2013-04-18
1、Factory模式

圖1 Factory模式結構示意圖

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

圖2:Factory模式結構示意圖

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

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

Singleton Pattern結構圖

在Singleton模式的結構圖中可以看到,我們通過維護一個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結構圖

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

Prototype Pattern結構圖

Prototype模式提供了一個通過已存在對象進行新對象創(chuàng)建的接口(Clone),Clone()實現(xiàn)和具體的實現(xiàn)語言相關,在C++中我們將通過拷貝構造函數(shù)實現(xiàn)之。
Prototype模式通過復制原型(Prototype)而獲得新對象創(chuàng)建的功能,這里Prototype本身就是“對象工廠”(因為能夠生產(chǎn)對象),實際上Prototype模式和Builder模式、AbstractFactory模式都是通過一個類(對象實例)來專門負責對象的創(chuàng)建工作(工廠對象),它們之間的區(qū)別是:Builder模式重在復雜對象的一步步創(chuàng)建(并不直接返回對象),AbstractFactory模式重在產(chǎn)生多個相互依賴類的對象,而Prototype模式重在從自身復制自己創(chuàng)建新類。
 

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多