• <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综合久久| 久久福利资源国产精品999| 亚洲色欲久久久综合网东京热| 国产欧美久久一区二区| 亚洲精品美女久久久久99小说| 色狠狠久久AV五月综合| 久久久WWW成人免费精品| 久久精品亚洲精品国产色婷| 久久精品成人免费国产片小草| 精品国产一区二区三区久久久狼| 久久久久无码精品国产app| 久久精品国产亚洲AV无码娇色| 亚洲国产一成久久精品国产成人综合| 久久精品国产亚洲精品2020| 一本色道久久88综合日韩精品| 久久精品中文字幕久久| 精品综合久久久久久97| 久久这里只有精品视频99| 青青青国产精品国产精品久久久久 | 久久人人爽人人爽人人片AV东京热| 91精品婷婷国产综合久久| 狠狠色婷婷久久一区二区三区| 精品熟女少妇AV免费久久| 思思久久99热免费精品6| 久久免费国产精品一区二区| 国产精品福利一区二区久久| 久久精品蜜芽亚洲国产AV| 亚洲午夜久久久久妓女影院| 中文字幕无码免费久久| 精品久久久久久无码不卡| 久久久午夜精品福利内容| 久久亚洲中文字幕精品一区| 午夜精品久久久久久99热| 久久亚洲日韩精品一区二区三区|