建造者模式(Builder模式)

定義

將構(gòu)建復雜對象的過程和它的部件解耦褐隆,使構(gòu)建過程與部件的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示的創(chuàng)建型模式朽合。

特點

Builder模式一步一步創(chuàng)建一個復雜對象鉴裹,允許用戶在不知道內(nèi)部構(gòu)建細節(jié)的情況下,可以更精細地控制對象的構(gòu)造流程廷没。

Builder是非線程安全的糊饱,所以如果要在Builder內(nèi)部類中檢查一個參數(shù)的合法性,必需要在對象創(chuàng)建完成之后再檢查颠黎。

應用場景

初始化一個對象特別復雜另锋,如參數(shù)多,且很多參數(shù)都具有默認值時狭归;

復雜產(chǎn)品類中的調(diào)用順序不同產(chǎn)生不同的效能時夭坪;

相同方法不同的執(zhí)行順序,產(chǎn)生不同的事件結(jié)果時过椎;

角色

Product——產(chǎn)品類 :? 產(chǎn)品的抽象類室梅。

Builder——抽象類, 規(guī)范產(chǎn)品的組建,一般是由子類實現(xiàn)具體的組件過程亡鼠。

ConcreteBuilder——具體的構(gòu)建者赏殃。

Director——指揮者,統(tǒng)一組裝過程(可省略间涵,Builder定義為Product的內(nèi)部類仁热,ConcreteBuilder在Product子類中)。

模式代碼

/**

* 1.產(chǎn)品類

?* 如果有多個產(chǎn)品類則繼承該類勾哩,每個產(chǎn)品類有對應的具體的建造者

*/

public class Product{ ??

????public void doSomething() {

? ? ? ? // 處理業(yè)務 ?

? ? }

}

/**

* 2.抽象建造者

* 有多個產(chǎn)品類則有多個具體的建造者

*/

public abstract class Builder{

????// 設置產(chǎn)品零件:設置產(chǎn)品的不同零件股耽,或者不同的裝配順序,以產(chǎn)生不同的產(chǎn)品

????public abstract void setPart();

????// 組建一個產(chǎn)品

????public abstract Product buildProduct();

}

/**

* 3.具體建造者

*/

public class ConcreteBuilder extends Builder{

????private Product product =new Product();

? ?? // 設置產(chǎn)品零件

? ? public void setPart() {

????????// 產(chǎn)品類內(nèi)的邏輯處理? ?

? ? }

????// 組建一個產(chǎn)品

????public Product buildProduct() {

????????return product;

??? }

}

/**

* 4.指揮者類

* 指揮者類起到封裝的作用钳幅,避免高層模塊深入到建造者內(nèi)部的實現(xiàn)類

*/

public class Director{

????private Builder builder =new ConcreteBuilder();

????public Product getProduct() {

????????builder.setPart();

? ? ? ? return builder.buildProduct();?

?? }

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市炎滞,隨后出現(xiàn)的幾起案子敢艰,更是在濱河造成了極大的恐慌,老刑警劉巖册赛,帶你破解...
    沈念sama閱讀 212,332評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钠导,死亡現(xiàn)場離奇詭異,居然都是意外死亡森瘪,警方通過查閱死者的電腦和手機牡属,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,508評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扼睬,“玉大人逮栅,你說我怎么就攤上這事〈坝睿” “怎么了措伐?”我有些...
    開封第一講書人閱讀 157,812評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長军俊。 經(jīng)常有香客問我侥加,道長,這世上最難降的妖魔是什么粪躬? 我笑而不...
    開封第一講書人閱讀 56,607評論 1 284
  • 正文 為了忘掉前任担败,我火速辦了婚禮,結(jié)果婚禮上镰官,老公的妹妹穿的比我還像新娘提前。我一直安慰自己,他們只是感情好朋魔,可當我...
    茶點故事閱讀 65,728評論 6 386
  • 文/花漫 我一把揭開白布岖研。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪孙援。 梳的紋絲不亂的頭發(fā)上害淤,一...
    開封第一講書人閱讀 49,919評論 1 290
  • 那天,我揣著相機與錄音拓售,去河邊找鬼窥摄。 笑死,一個胖子當著我的面吹牛础淤,可吹牛的內(nèi)容都是我干的崭放。 我是一名探鬼主播,決...
    沈念sama閱讀 39,071評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼鸽凶,長吁一口氣:“原來是場噩夢啊……” “哼币砂!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起玻侥,我...
    開封第一講書人閱讀 37,802評論 0 268
  • 序言:老撾萬榮一對情侶失蹤决摧,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后凑兰,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體掌桩,經(jīng)...
    沈念sama閱讀 44,256評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,576評論 2 327
  • 正文 我和宋清朗相戀三年姑食,在試婚紗的時候發(fā)現(xiàn)自己被綠了波岛。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,712評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡音半,死狀恐怖则拷,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情曹鸠,我是刑警寧澤隔躲,帶...
    沈念sama閱讀 34,389評論 4 332
  • 正文 年R本政府宣布,位于F島的核電站物延,受9級特大地震影響宣旱,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜叛薯,卻給世界環(huán)境...
    茶點故事閱讀 40,032評論 3 316
  • 文/蒙蒙 一浑吟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧耗溜,春花似錦组力、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽腥椒。三九已至,卻和暖如春候衍,著一層夾襖步出監(jiān)牢的瞬間笼蛛,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,026評論 1 266
  • 我被黑心中介騙來泰國打工蛉鹿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留滨砍,地道東北人。 一個月前我還...
    沈念sama閱讀 46,473評論 2 360
  • 正文 我出身青樓妖异,卻偏偏與公主長得像惋戏,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子他膳,可洞房花燭夜當晚...
    茶點故事閱讀 43,606評論 2 350

推薦閱讀更多精彩內(nèi)容