設(shè)計模式——建造者模式(Builder)

總體說來炼吴,建造者模式適合于一個具有較多的零件(屬性)的產(chǎn)品(對象)的創(chuàng)建過程。根據(jù)產(chǎn)品創(chuàng)建過程中零件的構(gòu)造是否具有一致的先后順序疫衩,可以將其分為如下兩種形式硅蹦。

一、通過靜態(tài)內(nèi)部類等方式實現(xiàn)的零件無序話構(gòu)造:

常見的經(jīng)典代碼如下:

package com.qqyumidi;
public class Client {
    public static void main(String[] args) {
        User.Builder builder = new User.Builder();
        User user = builder.setName("corn").setAge(100).setAddress("廣州").build();
    }
}

class User {
    private String name;
    private int age;
    private String address;

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public String getAddress() {
        return address;
    }

    public static class Builder {
        private User user = new User();

        public Builder setName(String name) {
            user.name = name;
            return this;
        }

        public Builder setAge(int age) {
            user.age = age;
            return this;
        }

        public Builder setAddress(String address) {
            user.address = address;
            return this;
        }

        public User build() {
            return user;
        }
    }
}

使用此種方式可以直接通過聯(lián)級形式構(gòu)造對象非常直觀方便闷煤。Android中的AlertDialog即采用此種方式創(chuàng)建童芹。

二、通過Client曹傀、Director辐脖、Builder和Product形成的建造者模式

Builder負(fù)責(zé)Product類對象的具體過程構(gòu)建,Director負(fù)責(zé)指導(dǎo)Build皆愉,要求Builder按照其指定的順序去完成Produt的構(gòu)造嗜价。最后通過Builder返回建造后的結(jié)果。網(wǎng)上有人對此種模式進行了形象的類比幕庐。

簡單地說久锥,就好象我要一座房子住,可是我不知道怎么蓋(簡單的砌墻异剥,層次較低)瑟由,也不知道怎么樣設(shè)計(建幾個房間,幾個門好看冤寿,層次較高)歹苦,于是我需要找一幫民工,他們會砌墻督怜,還得找個設(shè)計師殴瘦,他知道怎么設(shè)計,我還要確保民工聽設(shè)計師的領(lǐng)導(dǎo)号杠,而設(shè)計師本身也不干活蚪腋,光是下命令丰歌,這里砌一堵墻,這里砌一扇門屉凯,這樣民工開始建設(shè)立帖,最后,我可以向民工要房子了悠砚。在這個過程中晓勇,設(shè)計師是什么也沒有,除了他在腦子里的設(shè)計和命令哩簿,所以要房子也是跟民工要宵蕉,記住了酝静!

代碼暫時未整理节榜,后續(xù)整理上傳!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末别智,一起剝皮案震驚了整個濱河市宗苍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌薄榛,老刑警劉巖讳窟,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異敞恋,居然都是意外死亡丽啡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進店門硬猫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來补箍,“玉大人,你說我怎么就攤上這事啸蜜】友牛” “怎么了?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵衬横,是天一觀的道長裹粤。 經(jīng)常有香客問我,道長蜂林,這世上最難降的妖魔是什么遥诉? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮噪叙,結(jié)果婚禮上矮锈,老公的妹妹穿的比我還像新娘。我一直安慰自己构眯,他們只是感情好愕难,可當(dāng)我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般猫缭。 火紅的嫁衣襯著肌膚如雪葱弟。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天猜丹,我揣著相機與錄音芝加,去河邊找鬼。 笑死射窒,一個胖子當(dāng)著我的面吹牛藏杖,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播脉顿,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蝌麸,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了艾疟?” 一聲冷哼從身側(cè)響起来吩,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蔽莱,沒想到半個月后弟疆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡盗冷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年怠苔,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片仪糖。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡柑司,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出乓诽,到底是詐尸還是另有隱情帜羊,我是刑警寧澤,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布鸠天,位于F島的核電站讼育,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏稠集。R本人自食惡果不足惜奶段,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望剥纷。 院中可真熱鬧痹籍,春花似錦、人聲如沸晦鞋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至线定,卻和暖如春娜谊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背斤讥。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工纱皆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人芭商。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓派草,卻偏偏與公主長得像,于是被迫代替她去往敵國和親铛楣。 傳聞我的和親對象是個殘疾皇子近迁,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,601評論 2 353

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

  • 定義 建造模式是對象的創(chuàng)建模式。建造模式可以將一個產(chǎn)品的內(nèi)部表象(internal representation)...
    步積閱讀 6,951評論 1 7
  • 1.介紹 允許用戶在不知道內(nèi)部構(gòu)建細(xì)節(jié)的情況下蛉艾,可以更精細(xì)地控制對象的構(gòu)造流程钳踊。為了將構(gòu)建復(fù)雜對象的過程和它的部件...
    小菜_charry閱讀 208評論 0 0
  • 工廠類模式提供的是創(chuàng)建單個類的模式,而建造者模式則是將各種產(chǎn)品集中起來進行管理勿侯,用來創(chuàng)建復(fù)合對象,所謂復(fù)合對象就是...
    曉瘋閱讀 238評論 0 0
  • 沒有人買車會只買一個輪胎或者方向盤缴罗,大家買的都是一輛包含輪胎助琐、方向盤和發(fā)動機等多個部件的完整汽車。如何將這些部件組...
    justCode_閱讀 1,838評論 1 6
  • 總體說來面氓,建造者模式適合于一個具有較多的零件(屬性)的產(chǎn)品(對象)的創(chuàng)建過程兵钮。根據(jù)產(chǎn)品創(chuàng)建過程中零件的構(gòu)造是否具有...
    時待吾閱讀 273評論 0 0