<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    數(shù)據(jù)加載中……
    設(shè)計(jì)模式之Builder模式和Prototype模式

    前面兩篇文章中討論一下創(chuàng)建型設(shè)計(jì)模式的工廠模式、抽象工廠模式、單例模式,今天就繼續(xù)聊一聊創(chuàng)建型模式的剩下兩種,Builder模式和Prototype模式。

    1、Builder模式

    何為Builder模式,其實(shí)Builder模式比較好理解,就是將一個(gè)復(fù)雜對(duì)象的創(chuàng)建過程分解成幾個(gè)Step,而每個(gè)step又抽象出來。具體實(shí)現(xiàn)由每個(gè)子類自己來決定,在通過第三方的一個(gè)Driector類來實(shí)現(xiàn)組合Step的順序以達(dá)到最終的創(chuàng)建這個(gè)復(fù)雜的對(duì)象。

    具體可以見如下的圖(from wiki):

    從圖中,我們可以看到Director的Construct類用于將每個(gè)step構(gòu)建起來,Builder中的buildPart()具體抽象了創(chuàng)建的過程由繼承類ConcreteBuilder的BuilderPart()來實(shí)現(xiàn)具體的構(gòu)建。最終構(gòu)建一個(gè)完整的Product。

    后面在聊一下結(jié)合其他設(shè)計(jì)模式的理解,關(guān)于Builder和Abstract Factory。Builder主要是構(gòu)造整理里面的每一個(gè)part。而Abstract Factory則是為了為統(tǒng)一類的Product提夠工廠。還有關(guān)于Build Part,個(gè)人倒是覺得可以結(jié)合工廠模式來做,這樣將每個(gè)part的實(shí)現(xiàn)由和ConcreteBuilder解耦合了,例如通過注入的方式來表明具體的實(shí)現(xiàn)。

    突然想到,如果能把各種設(shè)計(jì)模式用的游刃有余那該是多么happy的一件事啊。


    2、Prototype模式

    和builder模式一樣,Prototype也同樣非常好理解,你可能經(jīng)常不經(jīng)意間就用到了它。例如你已經(jīng)有一個(gè)某個(gè)類的對(duì)象了,現(xiàn)在你需要?jiǎng)?chuàng)建一個(gè)和本對(duì)象相同的新對(duì)象。(請(qǐng)注意理解這里相同的意思哦)那該如何呢?基本上就會(huì)想到Clone()方法了。沒錯(cuò),clone()方法就是原型模式的實(shí)現(xiàn)。下面先看一下原型模式的結(jié)構(gòu)圖(from 大話設(shè)計(jì)模式)


    在原型模式中一般會(huì)要處理的就是深淺拷貝的問題,其實(shí)關(guān)于深淺拷貝也是比較好理解的。以java為例,java的內(nèi)存分為四快:堆、棧、代碼區(qū)、數(shù)據(jù)區(qū)。對(duì)象的引用放在棧,對(duì)象放在堆。對(duì)于clone()毫無疑問,會(huì)重新開辟一個(gè)堆空間構(gòu)建新對(duì)象。對(duì)于該對(duì)象的基本類型復(fù)制為原對(duì)象的值。那么對(duì)于類類型呢?有兩種方式:一種是同樣開辟一個(gè)空間存放該類類型(注意這是一個(gè)遞歸的過程),這就是所謂的深拷貝;還有一種則是只是引用指向原對(duì)象類類型的實(shí)例,此為淺拷貝。

    關(guān)于深拷貝一定要注意就是,這是一個(gè)遞歸的過程。你必須保此類所包含的所有類(包括遞歸包含),都實(shí)現(xiàn)了深拷貝。還有就是要求父類對(duì)象也實(shí)現(xiàn)對(duì)象也實(shí)現(xiàn)了clone()方法,并完成深拷貝。而且在子類的clone()中調(diào)用super.clone()方法。

    Ps:在java中一般實(shí)現(xiàn)Cloneable接口中的clone()方法即可。
    pdf下載:/Files/zhenxuanpan/設(shè)計(jì)模式之Builder模式和Prototype模式.pdf


     

    posted on 2011-09-02 00:26 潘潘.eagle 閱讀(379) 評(píng)論(0)  編輯  收藏 所屬分類: Design Pattern


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 久草免费在线观看视频| 国产亚洲精品美女久久久久| 免费网站观看WWW在线观看| 国产免费无遮挡精品视频| 亚洲成av人在线观看网站 | 婷婷亚洲久悠悠色悠在线播放| 日亚毛片免费乱码不卡一区| 免费中文字幕在线观看| 国产成人综合亚洲| 亚洲综合色在线观看亚洲| 日韩在线视精品在亚洲| 亚洲精品国产自在久久| GOGOGO高清免费看韩国| 亚洲国产综合91精品麻豆| 四虎在线最新永久免费| 国产成人精品日本亚洲18图| 在线播放免费人成视频在线观看 | 亚洲精品国产精品乱码不卞 | 久久久久久av无码免费看大片| 亚洲熟妇少妇任你躁在线观看无码 | 久久一区二区三区免费| 亚洲AV无码久久精品成人| 久草免费在线观看视频| 男男gay做爽爽的视频免费| 国产精品亚洲二区在线观看| 国产成人精品无码免费看| 亚洲中文字幕久在线| 免费国产成人高清在线观看麻豆| 日韩一级片免费观看| 亚洲精品在线观看视频| 好爽…又高潮了免费毛片| 成年免费a级毛片| 久久亚洲AV成人无码国产| 免费观看毛片视频| 精品免费久久久久国产一区 | 亚洲国产人成在线观看69网站| 在人线av无码免费高潮喷水| 人妻巨大乳hd免费看| 亚洲高清日韩精品第一区| 国产精品公开免费视频| 久草视频在线免费看|