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

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

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

    posts - 297,  comments - 1618,  trackbacks - 0
    ???? 建造(Builder)模式屬于對象的創建模式
    1. 定義
    ????? 建造模式將一個產品的內部表象與產品生成過程分割出來,從而可以使一個建造過程生成具有不同的內部表象的產品對象。
    ?2. 使用的原因
    ???? 是為了將構建復雜對象的過程和它的部件解耦。
    ?3.?適用的情況
    ????? 建造模式利用一個導演者對象和具體建造者對象一個一個地建造出所有的零件,從而建造出完整的產品對象。建造者模式將產品的結構和產品的零件建造過程對客戶端隱藏起來,把對建造過程進行指揮的責任和具體建造零件和責任分割開來,達到責任劃分和封裝的目的。
    4. 類圖結構及其說明
    ???? 1)
    建造模式的類圖如下所示:
    ??????
    ????? 2)各類的說明如下:
    ?????????i)抽象建造者(Builder)角色:給出一個抽象接口,以規范產品對象的各個組成成分的構造;
    ???????? ii)具體建造者(ConcretBuilder)角色:它在應用程序的調用下創建產品的實例。完成任務為;
    ????????????? a)? 實現抽象建造者Builder接口,給出一步步完成創建產品實例的操作;
    ????????????? b)? 在創建完成后,提供產品的實例。
    ?????????iii) 導演者(Director角色):調用具體建造者角色以創建產品對象;
    ???????? iv)產品(Product)角色:建造中的復雜對象。一般情況下,一個系統不止一個產品類。
    5. 應用舉例
    ????????以下實例建造一所Amigo想要的一所房子,呵呵,初中時的夢想:)
    ??????? 一所小小的竹子做成的房子,滿屋掛滿風鈴,有一個茶幾,坐落在山上。
    ?????1) 需求分析
    ????????Amigo的這所房子的建造跟我們討論的建造模式很是相關哦,竹子、風鈴、茶幾相當于我們所說的“零件”??,最后建造成的房子相當于Amigo夢寐以求的竹房。呵呵,我們開始建造吧,完成Amigo的夢想!
    ???????? i)我們首先建立一個接口Builder,它定義如何創建我想要的房子的各個組成部分:
    ????????????
    public?interface?Builder?{
    ??
    //創建想要的竹子
    ??void?buildBamboo();

    ??
    //創建風鈴
    ??void?buildWindbell();
    ??
    ??
    //創建茶幾
    ??void?buildTeapoy();
    ?
    ??
    //返回最后建造好的房子
    ??
    //房子的組裝過程不在這里進行,而是轉移到Director中進行,從而實現了解耦過程和部件
    ??House?getHouse();
    }

    ??????? ii)Director類將竹子、風鈴、茶幾最后組裝成我的full house
    ????
    public?class?Director?{
    ????
    private?Builder?builder;
    ????
    ????
    public?Director(Builder?builder)?{
    ????
    this.builder?=?builder;
    ????}
    ?

    ????
    /**
    ??????*?該方法組裝我的full?house
    ??????
    */

    ????
    public?void?construct()?{
    ????builder.buildBamboo();
    ????????builder.buildWindbell();??
    ????????builder.buildTeapoy();??
    ????}

    }
    ????? iii)具體建造器,茶幾等怎么建造成的?我這樣的懶人是不會知道的了,到時候請人吧。
    ?
    public?class?ConcreteBuilder?implements?Builder?{
    ???
    public?void?buildBamboo()?{
    ???????
    //讓別人去做吧,我去數工錢了
    ????}


    ????
    public?void?buildWindbell()?{
    ???????
    //同上
    ?????}


    ????
    public?void?buildTeapoy()?{
    ???????
    //同上
    ?????}


    ?????
    public?House?getHouse()?{
    ?????}

    }

    ??????
    ?????? iv)House類
    ????????????
    public?class?House?{
    }

    ?????? v) 下面來看看如何使用Builder模式來創建我的竹房,呵呵。
    ??????????
    ConcreteBuilder?builder?=?new?ConcreteBuilder();
    Director?director?
    =?new?Director(builder);
    director.construct();
    House?house?
    =?builder.getHouse();

    ???????:),建得差不多吧,還差點什么呢,以后慢慢想咯。
    參考書籍:《Java與模式》
    ??????????????????? 《Patterns in Java》

    ?

    posted on 2007-03-18 23:27 阿蜜果 閱讀(4596) 評論(9)  編輯  收藏 所屬分類: Design Pattern


    FeedBack:
    # re: 設計模式學習筆記--建造模式(Builder)
    2007-03-19 09:10 | Tortoise
    支持!你好用功呀!~  回復  更多評論
      
    # re: 設計模式學習筆記--建造模式(Builder)
    2007-03-19 11:54 | Tortoise
    好經典呀。就是不知道干嗎要這樣設計  回復  更多評論
      
    # re: 設計模式學習筆記--建造模式(Builder)
    2007-03-20 10:46 | zhyiwww
    講的簡單易懂。基本上明白了,還需要人深入的學習和實踐。  回復  更多評論
      
    # re: 設計模式學習筆記--建造模式(Builder) [未登錄]
    2007-03-20 13:21 | 阿蜜果
    呵呵,努力學習設計模式中,up下篇,template模式  回復  更多評論
      
    # re: 設計模式學習筆記--建造模式(Builder)
    2008-01-08 12:29 | hbyufan@hotmail.com
    一所小小的竹子做成的房子,滿屋掛滿風鈴,有一個茶幾,坐落在山上。  回復  更多評論
      
    # re: 設計模式學習筆記--建造模式(Builder) [未登錄]
    2009-02-10 14:28 | bean
    ConcreteBuilder builder = new ConcreteBuilder();
    最好用接口聲明  回復  更多評論
      
    # re: 設計模式學習筆記--建造模式(Builder)
    2009-12-21 15:44 | xiaoyang818
    ConcreteBuilder builder = new ConcreteBuilder();

    最好改成

    Builder builder = new ConcreteBuilder();
      回復  更多評論
      
    # re: 設計模式學習筆記--建造模式(Builder)
    2011-03-17 11:20 | fxbird
    都是些人云亦云的家伙,請問博主,你能說出建造模式和構造函數有什么區別嗎?建造的時候難道不需要參數嗎,哪有不需要參數就能構造出的東西。  回復  更多評論
      
    # re: 設計模式學習筆記--建造模式(Builder) [未登錄]
    2012-09-24 12:06 | C
    @xiaoyang818
    +1  回復  更多評論
      
    <2007年3月>
    25262728123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

          生活將我們磨圓,是為了讓我們滾得更遠——“圓”來如此。
          我的作品:
          玩轉Axure RP  (2015年12月出版)
          

          Power Designer系統分析與建模實戰  (2015年7月出版)
          
         Struts2+Hibernate3+Spring2   (2010年5月出版)
         

    留言簿(263)

    隨筆分類

    隨筆檔案

    文章分類

    相冊

    關注blog

    積分與排名

    • 積分 - 2294312
    • 排名 - 3

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲一级毛片视频| 中文字幕亚洲情99在线| 成人免费观看男女羞羞视频| 成人黄18免费视频| 亚洲中文无码mv| 天天看免费高清影视| 亚洲熟妇无码八V在线播放| 在线播放免费播放av片| 色欲aⅴ亚洲情无码AV蜜桃| 国产jizzjizz免费看jizz| 久久精品国产亚洲AV天海翼| 五月婷婷亚洲综合| 香蕉视频在线免费看| 亚洲国产精品久久久久网站| 无码人妻精品中文字幕免费 | 1000部拍拍拍18勿入免费凤凰福利| 亚洲综合在线视频| 久久这里只有精品国产免费10| 天堂亚洲国产中文在线| 国产jizzjizz视频全部免费| 国产精品免费αv视频| 久久丫精品国产亚洲av| 亚洲第一成年免费网站| 亚洲aⅴ天堂av天堂无码麻豆| www国产亚洲精品久久久日本| 久久精品成人免费看| 亚洲一区二区三区91| 亚洲国产一区视频| 最近中文字幕完整免费视频ww| 成人亚洲国产va天堂| 亚洲美女高清一区二区三区 | 又粗又硬又大又爽免费视频播放| 国产成人无码精品久久久免费| 久久精品国产亚洲AV香蕉| 日本高清免费aaaaa大片视频| 一本大道一卡二大卡三卡免费| 久久综合亚洲色HEZYO社区| 免费A级毛片无码A| 真实国产乱子伦精品免费| 国产偷国产偷亚洲高清人| 亚洲制服中文字幕第一区|