青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-91  評論-137  文章-0  trackbacks-0

建造者模式

前序

小菜和大鳥兩人出去吃夜宵,大鳥要了份炒飯,小菜要了份炒面。炒完后大鳥看到炒面感覺不錯,于是也叫了一份。大鳥嘗后感覺淡而無味,于是便問小菜:“為什么你的炒面好吃,而我再要的炒面卻沒有放鹽?這好吃不好吃是由誰決定的?”小菜答道:“當然是燒菜的人,他感覺好,就是一盤好面,要是心情不好,或者粗心大意,就是一盤垃圾。”“:)好,那再想想,老麥老肯他們的產品,味道是由什么決定的?”“我知道,那是由他們的工作流程決定的,由于他們制定了非常規范的工作流程,原料放多少,加熱幾分鐘,都有嚴格規定,估計放多少鹽都是用克來計量的。而這個工作流程是在所有的門店都必須要遵照執行的,所以我們吃到的東西不管在哪在什么時候味道都一樣。這里我們要吃的食物都依賴工作流程。”

于是大鳥出題讓小菜實現一個畫小人的程序。

建造小人第一版

#include <stdio.h>

 

class Graphics

{

public:

       void DrawEllipse(int x1,int y1,int x2,int y2)

       {

              printf("DrawEllipse %d,%d,%d,%d\n",x1,y1,x2,y2);

       }

      

       void DrawRectangle(int x1,int y1,int x2,int y2)

       {

              printf("DrawRectangle %d,%d,%d,%d\n",x1,y1,x2,y2);

       }

      

       void DrawLine(int x1,int y1,int x2,int y2)

       {

              printf("DrawLine %d,%d,%d,%d\n",x1,y1,x2,y2);

       }

};

 

class PersonThinBuilder

{

public:

       PersonThinBuilder(Graphics _g) : g(_g){}

      

       void Build()

       {

              g.DrawEllipse(50,20,30,30);

              g.DrawRectangle(60,50,10,50);

              g.DrawLine(60,50,40,100);

              g.DrawLine(70,50,90,100);

              g.DrawLine(60,100,45,150);

              g.DrawLine(70,100,85,150);

       }

protected:

       Graphics g;

};

 

class PersonFatBuilder

{

public:

       PersonFatBuilder(Graphics _g) : g(_g){}

      

       void Build()

       {

              g.DrawEllipse(50,20,30,30);

              g.DrawEllipse(60,50,10,50);

              g.DrawLine(60,50,40,100);

              g.DrawLine(70,50,90,100);

              g.DrawLine(60,100,45,150);

              g.DrawLine(70,100,85,150);

       }

protected:

       Graphics g;

};

 

int main()

{

       Graphics gThin,gFat;

      

       PersonThinBuilder* ptb = new PersonThinBuilder(gThin);

       ptb->Build();

      

       PersonFatBuilder* pfb = new PersonFatBuilder(gFat);

       pfb->Build();

      

       delete ptb;

       delete pfb;

       return 0;

}

“炒面忘記放鹽的問題依然沒有解決。比如我們現在需要你加一個高個的小人,你會不會因為編程不注意,又讓他缺胳膊少腿呢?”

“是呀,最好的辦法是規定,凡是建造小人,都必須要有頭和身體,以及兩收兩腳。”

建造者模式

將產品的內部表象和產品的生成過程分割開來,從而使一個建造過程生成具有不同的內部表象的產品對象。建造模式使得產品內部表象可以獨立的變化,客戶不必知道產品內部組成的細節。建造模式可以強制實行一種分步驟進行的建造過程。

實現方式(UML類圖)


實現代碼

#include <stdio.h>

 

class Graphics

{

public:

       void DrawEllipse(int x1,int y1,int x2,int y2)

       {

              printf("DrawEllipse %d,%d,%d,%d\n",x1,y1,x2,y2);

       }

      

       void DrawRectangle(int x1,int y1,int x2,int y2)

       {

              printf("DrawRectangle %d,%d,%d,%d\n",x1,y1,x2,y2);

       }

      

       void DrawLine(int x1,int y1,int x2,int y2)

       {

              printf("DrawLine %d,%d,%d,%d\n",x1,y1,x2,y2);

       }

};

 

class PersonBuilder

{

public:

       PersonBuilder(Graphics _g) : g(_g){}

      

       virtual void BuildHead()=0;

       virtual void BuildBody()=0;

       virtual void BuildArmLeft()=0;

       virtual void BuildArmRight()=0;

       virtual void BuildLegLeft()=0;

       virtual void BuildLegRight()=0;

protected:

       Graphics g;

};

 

class PersonThinBuilder : public PersonBuilder

{

public:

       PersonThinBuilder(Graphics g) : PersonBuilder(g){}

      

       virtual void BuildHead()

       {

              g.DrawEllipse(50,20,30,30);

       }

      

       virtual void BuildBody()

       {

              g.DrawRectangle(60,50,10,50);

       }

      

       virtual void BuildArmLeft()

       {

              g.DrawLine(60,50,40,100);

       }

      

       virtual void BuildArmRight()

       {

              g.DrawLine(70,50,90,100);

       }

      

       virtual void BuildLegLeft()

       {

              g.DrawLine(60,100,45,150);

       }

      

       virtual void BuildLegRight()

       {

              g.DrawLine(70,100,85,150);

       }

};

 

class PersonFatBuilder : public PersonBuilder

{

public:

       PersonFatBuilder(Graphics g) : PersonBuilder(g){}

      

       virtual void BuildHead()

       {

              g.DrawEllipse(50,20,30,30);

       }

      

       virtual void BuildBody()

       {

              g.DrawEllipse(60,50,10,50);

       }

      

       virtual void BuildArmLeft()

       {

              g.DrawLine(60,50,40,100);

       }

      

       virtual void BuildArmRight()

       {

              g.DrawLine(70,50,90,100);

       }

      

       virtual void BuildLegLeft()

       {

              g.DrawLine(60,100,45,150);

       }

      

       virtual void BuildLegRight()

       {

              g.DrawLine(70,100,85,150);

       }

};

 

class PersonDirector

{

public:

       PersonDirector(PersonBuilder* _pb) : pb(_pb){}

      

       void CreatePerson()

       {

              pb->BuildHead();

              pb->BuildBody();

              pb->BuildArmLeft();

              pb->BuildArmRight();

              pb->BuildLegLeft();

              pb->BuildLegRight();

       }

protected:

       PersonBuilder* pb;

};

 

int main()

{

       Graphics gThin,gFat;

      

       PersonThinBuilder* ptb = new PersonThinBuilder(gThin);

       PersonDirector* pdThin = new PersonDirector(ptb);

       pdThin->CreatePerson();

      

       PersonFatBuilder* pfb = new PersonFatBuilder(gFat);

       PersonDirector* pdFat = new PersonDirector(pfb);

       pdFat->CreatePerson();

      

       delete ptb;

       delete pdThin;

       delete pfb;

       delete pdFat;

       return 0;

}

運行結果



所有文件打包下載

posted on 2011-06-02 17:34 lwch 閱讀(1870) 評論(1)  編輯 收藏 引用 所屬分類: 設計模式

評論:
# re: 建造者模式 2011-06-12 22:11 | jc_ontheroad
學習設計模式。  回復  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久精品人人| 亚洲国产成人精品久久久国产成人一区 | 欧美v国产在线一区二区三区| 99xxxx成人网| 亚洲伦理自拍| 亚洲一区二区少妇| 欧美专区日韩视频| 久久综合给合| 欧美日本韩国| 国产精品一区二区三区观看| 国产一区91| 亚洲日本中文字幕| 亚洲在线观看免费| 久久免费观看视频| 91久久久在线| 夜夜爽99久久国产综合精品女不卡| 亚洲人成精品久久久久| 亚洲一区二区视频在线观看| 久久国产主播| 欧美日韩国产经典色站一区二区三区| 久久久亚洲国产美女国产盗摄| 久久夜色精品国产欧美乱| 欧美日韩不卡视频| 精品成人一区二区三区| 一区二区高清在线| 久久久亚洲一区| 日韩亚洲国产欧美| 久久综合网络一区二区| 国产精品毛片高清在线完整版| 国产婷婷色综合av蜜臀av | 久久久精品网| 国产精品久久福利| 亚洲成色www8888| 亚洲欧美另类综合偷拍| 欧美成人免费在线| 欧美日韩免费视频| 欧美在线视频观看| 欧美日韩精品一区二区天天拍小说| 伊人精品成人久久综合软件| 欧美大片在线观看一区| 国产亚洲欧美日韩美女| 亚洲一区二区三区在线看| 欧美韩国一区| 欧美影视一区| 国产精品一区视频| 亚洲一二三区在线| 亚洲激情综合| 欧美1区2区3区| 在线播放中文字幕一区| 欧美在线影院| 亚洲一区二区三区国产| 欧美日韩一区二区免费视频| 亚洲一区二区在线| 一区二区电影免费观看| 免费观看成人www动漫视频| 影音先锋在线一区| 久久一区国产| 久久久久久久久伊人| 国内精品一区二区三区| 久久精品视频在线观看| 性做久久久久久| 国产一区二区日韩| 欧美在线一二三区| 欧美91视频| 蜜臀av在线播放一区二区三区 | 久久综合九色| 久久久久**毛片大全| 国产一区二区三区免费观看| 久久久精品动漫| 久久国产精品久久国产精品| 狠狠色狠狠色综合人人| 欧美成年人视频网站| 欧美电影免费观看大全| 中日韩视频在线观看| 制服丝袜亚洲播放| 国产午夜精品理论片a级大结局| 亚洲一区二区三区成人在线视频精品| 男男成人高潮片免费网站| 免费视频一区二区三区在线观看| 亚洲第一毛片| 日韩亚洲一区二区| 国产精品腿扒开做爽爽爽挤奶网站 | 香蕉国产精品偷在线观看不卡| 欧美日本在线视频| 亚洲欧美日韩国产综合精品二区| 亚洲午夜性刺激影院| 国产一区视频在线看| 亚洲成色777777在线观看影院| 欧美成人三级在线| 亚洲欧美日韩另类| 久久米奇亚洲| 欧美在线免费一级片| 久久久97精品| 一区二区三区四区在线| 亚洲欧美日韩国产综合在线 | 免费久久精品视频| 中文精品一区二区三区| 欧美一区二区黄色| 日韩视频在线观看免费| 校园激情久久| 亚洲视频电影图片偷拍一区| 久久久国产精彩视频美女艺术照福利 | 久久成人18免费网站| 91久久在线播放| 亚洲欧美日韩视频二区| 亚洲精品久久久久中文字幕欢迎你| 99在线|亚洲一区二区| 国产一区视频网站| 一区二区三区免费看| 亚洲国产日韩美| 欧美尤物一区| 欧美一区2区三区4区公司二百| 欧美一区二视频| 亚洲女ⅴideoshd黑人| 欧美电影在线播放| 女人天堂亚洲aⅴ在线观看| 国产精品免费一区豆花| 亚洲经典三级| 亚洲国产欧美一区| 久久久久天天天天| 久久久精品国产一区二区三区| 欧美激情91| 亚洲第一精品影视| 在线观看91精品国产入口| 性色av一区二区怡红| 午夜在线一区| 国产精品视频| 亚洲综合日韩在线| 亚洲——在线| 国产精品久久久久久久久久ktv| 欧美激情免费在线| 最新成人av网站| 猫咪成人在线观看| 欧美激情 亚洲a∨综合| 一区视频在线| 久久青草久久| 欧美激情视频网站| 亚洲精品一区二区三区婷婷月 | 亚洲私人影吧| 午夜视频一区在线观看| 国产精品区一区二区三| 亚洲已满18点击进入久久| 午夜精品短视频| 国产欧美日韩一区二区三区在线 | 欧美专区在线| 老司机成人网| 最新国产成人av网站网址麻豆| 一区二区三区免费在线观看| 亚洲第一二三四五区| 亚洲国产精品一区二区第四页av | 136国产福利精品导航网址应用| 性久久久久久| 久热爱精品视频线路一| **性色生活片久久毛片| 欧美不卡视频一区| 99riav久久精品riav| 欧美在线视屏| 在线看片一区| 欧美日韩国产免费观看| 亚洲午夜未删减在线观看| 久久久久免费观看| 日韩午夜剧场| 国产精品麻豆欧美日韩ww| 久久久福利视频| 日韩午夜在线观看视频| 久久精品综合网| 日韩午夜av| 国产亚洲激情| 欧美极品在线播放| 性做久久久久久| 最新国产精品拍自在线播放| 亚洲欧美国产精品桃花| 亚洲电影免费观看高清| 国产精品豆花视频| 麻豆国产精品一区二区三区 | 亚洲精品乱码久久久久久按摩观| 欧美激情一区二区三区全黄 | 91久久国产综合久久91精品网站| 欧美国产一区二区三区激情无套| 日韩网站免费观看| 久久久久久一区| 亚洲男女自偷自拍图片另类| 极品中文字幕一区| 欧美午夜在线一二页| 久久中文精品| 亚洲男人天堂2024| 亚洲精品久久嫩草网站秘色| 久久国内精品视频| 亚洲一区二区在线免费观看| 亚洲第一天堂av| 国产精品乱人伦中文| 欧美激情一区二区三区四区| 久久国产精品网站| 亚洲一区二区av电影| 亚洲精品视频免费观看| 欧美激情bt| 欧美成人免费全部观看天天性色| 亚洲欧美三级伦理| 亚洲校园激情| 亚洲婷婷在线|