posts - 73,  comments - 55,  trackbacks - 0
          1。采用Factory method、Builder和Abstract Factory模式可以分離接口和具體實(shí)現(xiàn),本文通過類比討論三者間的差異。

          ??? 下面舉例說明三者間的差異,其中客戶相當(dāng)于模式使用者,商家相當(dāng)于模式本身:??? 1. Factory method類似購買品牌機(jī),客戶可以選擇聯(lián)想或DELL,商家的模式是提供各類品牌整機(jī);??? 2. Builder類似購買組裝機(jī),商家的模式是商家提供配件,并按客戶提要求裝機(jī),最后商家提供機(jī)器(得到一臺(tái)整機(jī));??? 3. Abstract Factory類似DIY,用戶根據(jù)價(jià)格(比如分高中低三個(gè)價(jià)位,每個(gè)價(jià)位一套最優(yōu)配置)選擇一套配件,(得到一套配件)。

          2。Factory method和Abstract Factory模式區(qū)別:
          雖然兩種模式表面看來都是用來創(chuàng)建對(duì)象的,Abstract Factory創(chuàng)建一組products, Factory Method只創(chuàng)建一個(gè)product,但這并不意味著Factory Method只是Abstract Factory在只有一個(gè)product時(shí)的特例。
          (以下把Abstract Factory模式簡稱為AF,把Factory Method簡稱為FM)

          AF的適用性在設(shè)計(jì)模式一書中解釋如下:
          一個(gè)系統(tǒng)要獨(dú)立于它的產(chǎn)品的創(chuàng)建、組合和表示時(shí);
          一個(gè)系統(tǒng)要由多個(gè)產(chǎn)品系列中的一個(gè)來配置的時(shí)候;
          當(dāng)你要強(qiáng)調(diào)一系列相關(guān)的產(chǎn)品對(duì)象的設(shè)計(jì)以便進(jìn)行聯(lián)合使用時(shí);
          當(dāng)你提供一個(gè)產(chǎn)品類庫,而只想顯示它們的接口而不是實(shí)現(xiàn)時(shí)。

          FM的適用性在設(shè)計(jì)模式一書中解釋如下:
          當(dāng)一個(gè)類不知道它所創(chuàng)建的對(duì)象的類的時(shí)候;
          當(dāng)一個(gè)類希望由它的子類來指定它所創(chuàng)建的對(duì)象的時(shí)候;
          當(dāng)類創(chuàng)建對(duì)象的職責(zé)委托給多個(gè)幫助子類中的某一個(gè), 并且你希望將"哪一個(gè)幫助子類是代理者"這一信息局部化的時(shí)候。

          因此,不同主要在于:
          (1)應(yīng)用環(huán)境不同:FM中創(chuàng)建者的職責(zé)并不僅限于創(chuàng)建對(duì)象,而AF通常只有創(chuàng)建對(duì)象這一職責(zé)。
          (2)實(shí)現(xiàn)方式不同:FM是實(shí)現(xiàn)繼承,抽象類實(shí)現(xiàn)大部分操作,通常僅將對(duì)象的創(chuàng)建工作延遲到子類來完成;AF是接口繼承,抽象類通常不實(shí)現(xiàn)任何功能,僅僅定義一系列接口,子類實(shí)現(xiàn)抽象類定義的接口。
          (3)工廠方法可以說成template method在創(chuàng)建對(duì)象上面的應(yīng)用,目的是封裝具體創(chuàng)建哪個(gè)對(duì)象;而抽象工廠是為了創(chuàng)建一“系列”的產(chǎn)品,抽象工廠通常用工廠方法來實(shí)現(xiàn)從而封裝了具體創(chuàng)建哪個(gè)產(chǎn)品系列。抽象工廠可以通過一系列工廠方法實(shí)現(xiàn)。

          3。template mothod? vs? strategy
          ?????? 這兩個(gè)模式的相同之處在于它們可以使算法和上下文解耦,不同之處在于一個(gè)是使用繼承來解決問題,另一個(gè)是基于委托。 而且strategy是對(duì)于整個(gè)算法的,template是針對(duì)算法的具體步驟的。

          4。Proxy模式和Strategy模式

          Adapter模式和代理模式(Proxy)都是在對(duì)象間構(gòu)造一個(gè)簡單的層。然而,Adapter模式向?qū)ο筇峁┮粋€(gè)不同的接口,代理模式(Proxy)為對(duì)象提供相同的接口。


          posted on 2006-07-25 11:09 保爾任 閱讀(467) 評(píng)論(0)  編輯  收藏 所屬分類: Design Patten

          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(4)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 永和县| 大同市| 双峰县| 淄博市| 嘉兴市| 衡水市| 岱山县| 石台县| 永丰县| 大冶市| 宜兰市| 沙坪坝区| 田阳县| 洛宁县| 兴国县| 城固县| 常宁市| 阿尔山市| 浦城县| 修文县| 定远县| 金塔县| 扎赉特旗| 丹寨县| 抚宁县| 孝昌县| 保山市| 台湾省| 通城县| 南丹县| 五常市| 右玉县| 响水县| 平顺县| 云和县| 工布江达县| 筠连县| 永登县| 醴陵市| 芮城县| 大理市|