夢幻之旅

          DEBUG - 天道酬勤

             :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            671 隨筆 :: 6 文章 :: 256 評(píng)論 :: 0 Trackbacks
          生成器模式
              生成器模式是將一個(gè)復(fù)雜的對(duì)象的構(gòu)建與它的表示分離,使同樣的構(gòu)建過程可能創(chuàng)建不同的表示.
              是為了將構(gòu)建復(fù)雜對(duì)象的過程和它的部件解耦.注意: 是解耦過程部件.

          因?yàn)橐粋€(gè)復(fù)雜的對(duì)象,不但有很多大量組成部分,如汽車,有很多部件:車輪 方向盤 發(fā)動(dòng)機(jī)還有各種小零件等等,部件很多,但遠(yuǎn)不止這些,如何將這些部件裝配成一輛汽車,這個(gè)裝配過程也很復(fù)雜(需要很好的組裝技術(shù)),Builder模式就是為了將部件和組裝過程分開.
          生成器的組成部份:
             1.產(chǎn)品:  復(fù)雜對(duì)象  
             2.抽象生成器:抽象生成器是一個(gè)接口,該接口除了創(chuàng)建一個(gè)產(chǎn)品對(duì)象的各個(gè)組件定義了若干方法以外,還要定義返回project;
             3.具體生成器:實(shí)現(xiàn)抽象生成器的方法
             4.指揮者:它是一個(gè)類,該類含有抽象生成器的接口生成變量.它的職責(zé)是根據(jù)用戶提供的生成器的種類來生成具體的產(chǎn)品對(duì)象.
          生成器各部份之間的關(guān)系:

          當(dāng)客戶需要一個(gè)產(chǎn)品時(shí),把需要的參數(shù)傳遞個(gè)導(dǎo)向器,導(dǎo)向器根據(jù)傳遞的參數(shù)調(diào)用具體的生成器,具體的生成器通過一系列的操作(getAnimal()通過調(diào)用其它的接口方法實(shí)現(xiàn))最會(huì)返回一個(gè)產(chǎn)品。

          結(jié)論:生成器模式使得客戶可以更加精細(xì)的控制一個(gè)對(duì)象的構(gòu)建,每個(gè)具體的創(chuàng)建者包含了創(chuàng)建和裝配一個(gè)特定產(chǎn)品的所有代碼,這些代碼只用寫一次,便可以被不同的Director使用,從而可以裝配出不同的對(duì)象。

          和抽象工廠的區(qū)別:

              抽象工廠需要生產(chǎn)一個(gè)迷宮(Maze* maze),然后一步步生產(chǎn)迷宮。

              而生成器模式就不一樣了,生成器(builder)封裝了建造一個(gè)筆記本配件的方法。CreateMaze()只需要對(duì)這些配件進(jìn)行組裝。最后直接返回一個(gè)產(chǎn)品。

              這樣看來工廠更像一種特殊的生成器,因?yàn)樯善饕部梢愿鼡Qbuilder,生成器還能夠生產(chǎn)不是一個(gè)系列的產(chǎn)品。即生成器不僅僅可以CreateMaze(),還可以生產(chǎn)CreateStandMaze()。類比到電腦,即不僅僅可以 CreateComputer(),還可以CreateComplexComputer(),更換builder也可以生產(chǎn)相同系列,不同的產(chǎn)品。

           



           

          posted on 2011-08-02 01:53 HUIKK 閱讀(241) 評(píng)論(0)  編輯  收藏 所屬分類: Design Patterns
          主站蜘蛛池模板: 喀什市| 司法| 潞西市| 澎湖县| 时尚| 赤城县| 黔南| 曲阜市| 泰来县| 香格里拉县| 榆树市| 新乡县| 湾仔区| 林口县| 靖安县| 永丰县| 怀宁县| 庆元县| 苏州市| 宣城市| 福鼎市| 博湖县| 伊金霍洛旗| 太仓市| 博客| 许昌县| 沈丘县| 富蕴县| 榕江县| 凌海市| 留坝县| 胶南市| 房产| 靖江市| 宣武区| 昆山市| 烟台市| 鄢陵县| 郁南县| 宜川县| 岳普湖县|