日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

设计模式C++实现(3)——建造者模式

發(fā)布時(shí)間:2023/12/10 c/c++ 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式C++实现(3)——建造者模式 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

軟件領(lǐng)域中的設(shè)計(jì)模式為開發(fā)人員提供了一種使用專家設(shè)計(jì)經(jīng)驗(yàn)的有效途徑。設(shè)計(jì)模式中運(yùn)用了面向?qū)ο缶幊陶Z(yǔ)言的重要特性:封裝、繼承、多態(tài),真正領(lǐng)悟設(shè)計(jì)模式的精髓是可能一個(gè)漫長(zhǎng)的過程,需要大量實(shí)踐經(jīng)驗(yàn)的積累。最近看設(shè)計(jì)模式的書,對(duì)于每個(gè)模式,用C++寫了個(gè)小例子,加深一下理解。主要參考《大話設(shè)計(jì)模式》和《設(shè)計(jì)模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ)》(DP)兩本書。本文介紹建造者模式的實(shí)現(xiàn)。

? ? ? ?建造者模式的定義將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示(DP)。《大話設(shè)計(jì)模式》舉了一個(gè)很好的例子——建造小人,一共需建造6個(gè)部分,頭部、身體、左右手、左右腳。與工廠模式不同,建造者模式是在導(dǎo)向者的控制下一步一步構(gòu)造產(chǎn)品的。建造小人就是在控制下一步步構(gòu)造出來的。創(chuàng)建者模式可以能更精細(xì)的控制構(gòu)建過程,從而能更精細(xì)的控制所得產(chǎn)品的內(nèi)部結(jié)構(gòu)。下面給出建造者模式的UML圖,以建造小人為實(shí)例。


? ? ? ? ? 對(duì)于客戶來說,只需知道導(dǎo)向者就可以了,通過導(dǎo)向者,客戶就能構(gòu)造復(fù)雜的對(duì)象,而不需要知道具體的構(gòu)造過程。下面給出小人例子的代碼實(shí)現(xiàn)。

[cpp]?view plaincopyprint?
  • class?Builder????
  • {??
  • public:??
  • ????virtual?void?BuildHead()?{}??
  • ????virtual?void?BuildBody()?{}??
  • ????virtual?void?BuildLeftArm(){}??
  • ????virtual?void?BuildRightArm()?{}??
  • ????virtual?void?BuildLeftLeg()?{}??
  • ????virtual?void?BuildRightLeg()?{}??
  • };??
  • //構(gòu)造瘦人??
  • class?ThinBuilder?:?public?Builder??
  • {??
  • public:??
  • ????void?BuildHead()?{?cout<<"build?thin?body"<<endl;?}??
  • ????void?BuildBody()?{?cout<<"build?thin?head"<<endl;?}??
  • ????void?BuildLeftArm()?{?cout<<"build?thin?leftarm"<<endl;?}??
  • ????void?BuildRightArm()?{?cout<<"build?thin?rightarm"<<endl;?}??
  • ????void?BuildLeftLeg()?{?cout<<"build?thin?leftleg"<<endl;?}??
  • ????void?BuildRightLeg()?{?cout<<"build?thin?rightleg"<<endl;?}??
  • };??
  • //構(gòu)造胖人??
  • class?FatBuilder?:?public?Builder??
  • {??
  • public:??
  • ????void?BuildHead()?{?cout<<"build?fat?body"<<endl;?}??
  • ????void?BuildBody()?{?cout<<"build?fat?head"<<endl;?}??
  • ????void?BuildLeftArm()?{?cout<<"build?fat?leftarm"<<endl;?}??
  • ????void?BuildRightArm()?{?cout<<"build?fat?rightarm"<<endl;?}??
  • ????void?BuildLeftLeg()?{?cout<<"build?fat?leftleg"<<endl;?}??
  • ????void?BuildRightLeg()?{?cout<<"build?fat?rightleg"<<endl;?}??
  • };??
  • //構(gòu)造的指揮官??
  • class?Director????
  • {??
  • private:??
  • ????Builder?*m_pBuilder;??
  • public:??
  • ????Director(Builder?*builder)?{?m_pBuilder?=?builder;?}??
  • ????void?Create(){??
  • ????????m_pBuilder->BuildHead();??
  • ????????m_pBuilder->BuildBody();??
  • ????????m_pBuilder->BuildLeftArm();??
  • ????????m_pBuilder->BuildRightArm();??
  • ????????m_pBuilder->BuildLeftLeg();??
  • ????????m_pBuilder->BuildRightLeg();??
  • ????}??
  • };??
  • ? ? ? ? ?客戶的使用方式:

    [cpp]?view plaincopyprint?
  • int?main()??
  • {??
  • ????FatBuilder?thin;??
  • ????Director?director(&thin);??
  • ????director.Create();??
  • ????return?0;??
  • }??
  • ? ? ? ? ?至此,《設(shè)計(jì)模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ)》一書上的5種創(chuàng)建型模式介紹完了,分別是工廠方法模式、抽象工廠模式、原型模式、建造者模式、單例模式。

    ? ? ? ?設(shè)計(jì)模式C++實(shí)現(xiàn)(1)——工廠模式

    ?? ??設(shè)計(jì)模式C++實(shí)現(xiàn)(4)——單例模式

    ? ? ? ?設(shè)計(jì)模式C++實(shí)現(xiàn)(5)——原型模式、模板方法模式?

    ? ? ???本人享有博客文章的版權(quán),轉(zhuǎn)載請(qǐng)標(biāo)明出處 http://blog.csdn.net/wuzhekai1985


    總結(jié)

    以上是生活随笔為你收集整理的设计模式C++实现(3)——建造者模式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。