[23種設(shè)計(jì)模式匯總]設(shè)計(jì)模式_建造者模式

[23種設(shè)計(jì)模式匯總]設(shè)計(jì)模式_建造者模式

ID:40314002

大小:53.00 KB

頁(yè)數(shù):7頁(yè)

時(shí)間:2019-07-30

[23種設(shè)計(jì)模式匯總]設(shè)計(jì)模式_建造者模式_第1頁(yè)
[23種設(shè)計(jì)模式匯總]設(shè)計(jì)模式_建造者模式_第2頁(yè)
[23種設(shè)計(jì)模式匯總]設(shè)計(jì)模式_建造者模式_第3頁(yè)
[23種設(shè)計(jì)模式匯總]設(shè)計(jì)模式_建造者模式_第4頁(yè)
[23種設(shè)計(jì)模式匯總]設(shè)計(jì)模式_建造者模式_第5頁(yè)
資源描述:

《[23種設(shè)計(jì)模式匯總]設(shè)計(jì)模式_建造者模式》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。

1、設(shè)計(jì)模式?建造者模式?4個(gè)角色:指揮者(Director),建造者(Builder),具體建造者(ConcreteBuilder),產(chǎn)品(Product)????????產(chǎn)品:需要?jiǎng)?chuàng)建的對(duì)象產(chǎn)品????????具體建造者:創(chuàng)建產(chǎn)品的實(shí)例并且實(shí)現(xiàn)建造者多個(gè)方法對(duì)產(chǎn)品進(jìn)行裝配????????建造者:本質(zhì)為抽象類,里面的抽象方法供具體建造者重寫(xiě),聲明產(chǎn)品的引用????????指揮者:調(diào)用建造者抽象類以及其方法???????實(shí)現(xiàn)思路:客戶端創(chuàng)建一個(gè)指揮者,并且實(shí)例化需要的產(chǎn)品的具體建造者,然后指揮者調(diào)用具體建造者的實(shí)例即將產(chǎn)品生產(chǎn)出

2、來(lái)。類圖:????????????????應(yīng)用場(chǎng)景:在Silverlight中我們需要生產(chǎn)一列多行的輸入框+TextBlock的組合,但是這些輸入框的類型不同,有一些只能輸入256個(gè)字符,有的只能輸入20個(gè)字符,還有的是多行的,有的是單行的輸入框。這些輸入框的種類是固定的,但是可能用戶自定義輸入框的時(shí)候我們生成的順序和各自的生成數(shù)量不知道。????????分析:在這里產(chǎn)品是固定的,有A,B,C,D,E,F六種輸入框+TextBlock,用戶可能生成的情況是A,A,C,C,B,B,C、也可能是B,C,D,B,C,F。這里我們使

3、用建造者模式,這幾種輸入框基本上都差不多,都是TextBlock+TextBox的模式。但是可輸入數(shù)量和是否多行是不定的,那么我們實(shí)現(xiàn)AConcreteBuilder,BConcreteBuilder,CConcreteBuilder,DConcreteBuilder,EConcreteBuilder,FConcreteBuilder等多個(gè)具體建造者,然后對(duì)于建造者中只需要兩個(gè)方法分別實(shí)例化產(chǎn)品,并且對(duì)產(chǎn)品的屬性(可輸入字符數(shù)、是否可多行)進(jìn)行設(shè)置,然后再用戶需要調(diào)用什么產(chǎn)品的時(shí)候,使用指揮者調(diào)用想要的ConcreteBui

4、lder具體建造者即可。????????下面我們以一個(gè)電腦產(chǎn)品生產(chǎn)的實(shí)例來(lái)具體看看BuilderPattern是如何使用的:????????一、產(chǎn)品角色//產(chǎn)品classComputer{privatestringm_CompName;privatestringm_MemorySize;privatestringm_DiskSize;///

///電腦名稱///publicstringCompName{get{returnm_CompName;}set{m_CompName=value;}

5、}///

///內(nèi)存大小///publicstringMemorySize{get{returnm_MemorySize;}set{m_MemorySize=value;}}//////硬盤(pán)大小///publicstringDiskSize{get{returnm_DiskSize;}set{m_DiskSize=value;}}//////顯示產(chǎn)品的信息///publicvoidShowComputerInfo(

6、){Console.WriteLine("------------------------");Console.WriteLine("電腦名稱:"+CompName);Console.WriteLine("內(nèi)存大?。?+MemorySize);Console.WriteLine("硬盤(pán)大?。?+DiskSize);}}復(fù)制代碼????????二、建造者角色//建造者定義建造產(chǎn)品的抽象方法和產(chǎn)品的引用abstractclassComputerBuilder{privateComputercomputerInstance;///

7、

///返回建立的電腦產(chǎn)品實(shí)例///publicComputerComputerInstance{get{returncomputerInstance;}set{computerInstance=value;}}//////創(chuàng)建電腦名稱///abstractpublicvoidCreateCompName();//////創(chuàng)建電腦內(nèi)存///abstractpublicvoidCreateCompMemory();/

8、//

///創(chuàng)建電腦硬盤(pán)///abstractpublicvoidCreateCompDisk();}復(fù)制代碼????????三、具體建造者角色//具體建造者創(chuàng)建蘋(píng)果電腦classAppleConcreteBuilder:ComputerBuilder{

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。