• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-167  評論-8  文章-0  trackbacks-0

            抽象工廠模式作為工廠模式的一種,自然具有工廠模式的設計理念,也就是提供一種生產實際產品的方法。

            builder模式的設計思想是提供一種組裝產品零件的方法。

            二者乍看起來井水不犯河水,可仔細一看二者何其相似來耳。

            在抽象工廠方法中有產品族的概念,意指同一系列的產品。比如魔獸中的一個族就有一套這樣的單位,而不同族之間都含有類似的單位,而各自對應的單位又具有一些差異。這樣在抽象工廠方法中建立4個具體工廠,各自負責一個族的單位生產就很自然了。

            作為對比,舉一個builder的例子。我們攢機器的時候首先會想到選用什么樣的CPU、顯卡,然后是什么樣的主板,繼而選擇什么樣的內存、硬盤。這樣我們在攢機器前就應該有一個所謂的指導類,向這個指導類中傳入具體的builder類就可以組裝出符合我們要求的機器。

            也許你發現了二者的差別,抽象工廠中必須要有嚴格的界限,即是你的就不是我的;而builder模式不存在這樣一個限制,你沒有被要求選擇AMD就要選擇金士頓。在我看來,若只看表明確實如此,如果深究這并非什么二者的差別。builder模式的無限制也可以擴展到抽象工廠中去。

            抽象工廠中某個產品等級結構(我覺得叫做產品種類更為合適)就要在每一個產品族中有一個具體的產品,比如農民就有侍僧、小精靈、苦力、農民四種,其它單位也基本如此。然而是可以有特例的,英雄就是一個特例。四個族中雖然含有各自的英雄,但是雇傭英雄的出現打破了這種限制,它們不屬于任何一個族,卻又屬于所有的族。這樣二者這方面的差別并不是本質上的。

            那么本質上的差別是什么呢?

            其實很簡單,本質上的差別還是源于設計理念。抽象工廠被設計出來的原因是生產一系列產品的需要,builder模式被設計出來的原因是組裝一系列的組件生產出一件產品。builder模式最終的目標是返回一件成品,而抽象工廠所返回的是一系列相互關聯的產品。

            builder模式可以利用抽象工廠方法生產自己的組件,而抽象工廠方法如果將所有生產的產品組裝在一起也就成為了builder模式。

            posted on 2012-11-13 17:51 老馬驛站 閱讀(519) 評論(0)  編輯 收藏 引用 所屬分類: Design pattern
            久久最新精品国产| 精品国产乱码久久久久久人妻| 久久精品国产亚洲av水果派| 日韩久久久久久中文人妻| 99久久99这里只有免费费精品| 久久精品这里热有精品| 欧美国产精品久久高清| 久久久无码人妻精品无码| 国产免费福利体检区久久| 伊人久久国产免费观看视频 | 国产高潮国产高潮久久久91| 久久久久久噜噜精品免费直播| 久久久久久久97| 精品久久久无码中文字幕| 久久久无码精品亚洲日韩京东传媒| 久久中文骚妇内射| 午夜精品久久久久久影视777| 久久这里只有精品18| 青青青青久久精品国产h久久精品五福影院1421 | 国产精品伦理久久久久久| 97精品依人久久久大香线蕉97| 999久久久国产精品| 精品乱码久久久久久久| 久久人与动人物a级毛片| 亚洲国产精品久久久久久| 久久精品国产免费观看| 亚洲?V乱码久久精品蜜桃| 国内精品久久久久久久影视麻豆 | 午夜精品久久久久久中宇| 色偷偷88欧美精品久久久| 亚洲国产二区三区久久| 国产亚洲欧美成人久久片| 精品久久久久香蕉网| 久久精品无码专区免费东京热| 欧美日韩精品久久久久| 久久最新免费视频| 久久亚洲天堂| 欧美成人免费观看久久| 久久精品国产99久久久古代| 久久久久人妻一区二区三区 | 国产成人精品久久亚洲|