04Builder模式.ppt_第1頁
04Builder模式.ppt_第2頁
04Builder模式.ppt_第3頁
04Builder模式.ppt_第4頁
04Builder模式.ppt_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、1,Builder模式,2,一、所涉及的C+面向?qū)ο缶幊陶Z法,1引用 /一旦引用被定義,它就不能再指向其他對象,3,一、所涉及的C+面向?qū)ο缶幊陶Z法,2引用 /拷貝大型的類對象時間空間開銷太大,4,一、所涉及的C+面向?qū)ο缶幊陶Z法,3引用 /指針需要引用(別名)嗎?,5,一、所涉及的C+面向?qū)ο缶幊陶Z法,3引用,6,二、Builder模式,1問題: ProductA *pa=new ProductA; ProductB *pb=new ProductB; ProductC *pc=new ProductC; 產(chǎn)品ABC之間并無聯(lián)系,但創(chuàng)建過程漫長、步驟多、算法復(fù)雜,7,二、Builder模式,

2、1問題: 創(chuàng)建一個產(chǎn)品(對象)的過程很長,步驟很多,內(nèi)部結(jié)構(gòu)很復(fù)雜。 常常會出現(xiàn)新的產(chǎn)品,需要新的生成器相配合。 有多個產(chǎn)品需要創(chuàng)建,產(chǎn)品之間沒有聯(lián)系;創(chuàng)建算法復(fù)雜,可重用,8,二、Builder模式,2核心思想 復(fù)雜對象的構(gòu)建與其表示分離,9,二、Builder模式,3解決方案-第一步 A 針對產(chǎn)品A、B、C定義三個具體的Builder class BuilderA Part1(); Part2(); Part3(); GetResult(); ;,10,二、Builder模式,3解決方案-第一步 B C class BuilderB Part1(); Part2(); Part3(); G

3、etResult(); ;,class BuilderC Part1(); Part2(); Part3(); GetResult(); ;,11,二、Builder模式,3解決方案-第二步 找出三個具體Builder的共性,定義父類 class BuilderA:public Builder /.省略; class BuilderB:public Builder /.省略; class BuilderC:public Builder /.省略; /UML圖表示,12,二、Builder模式,3解決方案-第三步 定義導(dǎo)向器Director class Director void Constru

4、ct(); ,13,二、Builder模式,3解決方案-第四步 實現(xiàn)導(dǎo)向器 void Director:Construct() builder-Part1(); builder-Part2(); builder-Part3(); ,14,二、Builder模式,3解決方案-第六步 如何使用 main() ProductA *pa; /聲明產(chǎn)品A BuilderA *ba=new BuilderA; /具體builder用來生產(chǎn)A Director *d=new Director(ba); /參數(shù)是具體builder d-Construct(); /創(chuàng)建產(chǎn)品,過程較長 pa=d-GetResul

5、t(); /得到產(chǎn)品的結(jié)果 ,15,二、Builder模式,4Builder創(chuàng)建型模式的本質(zhì) 分離出創(chuàng)建產(chǎn)品的復(fù)雜的算法和步驟 ProductA *pa=new ProductA; 變?yōu)?BuilderA *ba=new BuilderA; Director *d=new Director(ba); d-Construct(); ProductA *pa =d-GetResult();,16,二、Builder模式,5結(jié)構(gòu):用UML中的類圖、交互圖表示 畫法,17,二、Builder模式,6根據(jù)交互圖寫出代碼 ConcreteBuilder *cb=new ConcreteBuilder; D

6、irector *d=new Director(cb);/參數(shù)、構(gòu)造函數(shù) d-Construct(); Product *p=d-GetResult();,18,二、Builder模式,7代碼:書中的代碼用類圖表示,19,二、Builder模式,8一個游戲的例子: BuBing* bb=new Bubing; /創(chuàng)建步兵 Hawk* hk=new Hawk; /創(chuàng)建鷹騎士 FeiJi * fj =new Feiji; /創(chuàng)建直升機 /創(chuàng)建過程長、步驟多、三個兵種關(guān)聯(lián)少,20,二、Builder模式,9與工廠方法的區(qū)別: 1Builder模式的重點是工廠(具體生成器),可重用,不同的具體生成器之間有共性;工廠方法模

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論