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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

设计模式之Builder (创建者模式)的一些个人理解(转)

發(fā)布時(shí)間:2023/12/18 asp.net 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式之Builder (创建者模式)的一些个人理解(转) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

對(duì)于Builder模式很簡(jiǎn)單,但是一直想不明白為什么要這么設(shè)計(jì),為什么要向builder要Product而不是向知道建造過程的Director要。剛才google到一篇文章,總算清楚了。在這里轉(zhuǎn)貼一下這位richardluo的比喻。

簡(jiǎn)單地說,就好象我要一座房子住,可是我不知道怎么蓋(簡(jiǎn)單的砌墻,層次較低),也不知道怎么樣設(shè)計(jì)(建幾個(gè)房間,幾個(gè)門好看,層次較高),于是我需要找一幫民工,他們會(huì)砌墻,還得找個(gè)設(shè)計(jì)師,他知道怎么設(shè)計(jì),我還要確保民工聽設(shè)計(jì)師的領(lǐng)導(dǎo),而設(shè)計(jì)師本身也不干活,光是下命令,這里砌一堵墻,這里砌一扇門,這樣民工開始建設(shè),最后,我可以向民工要房子了。在這個(gè)過程中,設(shè)計(jì)師是什么也沒有,除了他在腦子里的設(shè)計(jì)和命令,所以要房子也是跟民工要,記住了!

以下是richardluo的代碼,我根據(jù)他的思路加上了相應(yīng)的注釋。


1,定義工人接口,就是能夠完成建造房子任務(wù)的人的通用要求。

java 代碼
  • // 工人接口,定義了各個(gè)工人所要進(jìn)行的工所作。他們負(fù)責(zé)進(jìn)行具體部件如窗戶,地板的建造。
  • // 同時(shí)因?yàn)榉孔邮敲窆そǖ?#xff0c;因此建設(shè)完成后由他把房子遞交回房主
  • public?interface?Builder?{??
  • ????
  • ??public??void?makeWindow();??
  • ??
  • ??public??void?makeFloor();??
  • ??
  • ??public??Room??getRoom();??
  • }??

  • 2,定義設(shè)計(jì)師,他的職責(zé)是指揮房主指派給他的工人按照自己的設(shè)計(jì)意圖建造房子。

    java 代碼
  • //?設(shè)計(jì)師。他知道房子應(yīng)該怎么設(shè)計(jì),但他不會(huì)自己去建造,而是指揮民工去建造。??
  • public?class?Designer?{??
  • ??
  • ??//?指揮民工進(jìn)行工作??
  • ??public?void?order(Builder??builder)?{??
  • ????builder.makeWindow();??
  • ????builder.makeFloor();??
  • ??}??
  • }??

  • 3,民工,他負(fù)責(zé)具體事物的實(shí)施。

    java 代碼
  • // 民工。負(fù)責(zé)進(jìn)行具體部件如窗戶,地板的建造。
  • //同時(shí)因?yàn)榉孔邮敲窆そǖ?#xff0c;因此建設(shè)完成后由他把房子遞交回房主??
  • public?class?Mingong??implements?Builder?{??
  • ??private??String?window="";??
  • ??private??String?floor="";??
  • ????
  • ??public??void?makeWindow()?{??
  • ????window=new?String("window");??
  • ??}??
  • ??
  • ??public??void?makeFloor(){??
  • ????floor=new?String("floor");??
  • ??}??
  • ???
  • ??//?回交房子給房主??
  • ??public??Room??getRoom()?{??
  • ????if((!window.equals(""))&&(!floor.equals("")))?{??
  • ??????System.out.println("room?ready!");??
  • ??????return?new?Room();??
  • ????}??
  • ????else?return?null;??
  • ??}??
  • }??

  • 4,房主,就是雇人,收房。

    java 代碼
  • //?房主。房主的任務(wù)就是聘請(qǐng)一個(gè)民工,一個(gè)設(shè)計(jì)師,同時(shí)把民工給設(shè)計(jì)師指揮,督促設(shè)計(jì)師開展工作。最后從民工手上收房。????
  • public?class?Client?{????
  • ????
  • ??public?static?void?main(String[]?args)?{????
  • ?????Builder?mingong?=?new?Mingong();????
  • ?????Designer??designer?=?new??Designer();????
  • ?????designer.order(mingong);????
  • ?????mingong.getRoom();????
  • ??}????
  • }???

  • 好了,我覺得這樣大概能說明白了。不知各位覺得如何呢?或者有更好的應(yīng)用場(chǎng)景解釋,敬請(qǐng)賜教。

    ?

    ?

    轉(zhuǎn)載于:https://www.cnblogs.com/McCa/p/4176938.html

    總結(jié)

    以上是生活随笔為你收集整理的设计模式之Builder (创建者模式)的一些个人理解(转)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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