離弦之Ray

            BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
            55 Posts :: 0 Stories :: 33 Comments :: 0 Trackbacks
           

          Decorator Pattern其實(shí)早就接觸過(guò)了,從java的輸入語(yǔ)句中可見(jiàn)一斑InputStream in = new BufferedInputStream(new FileInputStream(“test.txt”)); 其中BufferedInputStream FileInputStream 都是InputStream的子類,通過(guò)包含關(guān)系,讓外圍的類包含內(nèi)部那個(gè)類的功能及數(shù)據(jù),說(shuō)的形象一點(diǎn),就是在內(nèi)部那個(gè)類外面加了一層裝飾。這也是裝飾模型最核心的概念。

          Factory Pattern

          書(shū)中舉了匹薩店的例子,一開(kāi)始的類,將制作不同類型匹薩的方法都包含在里面,整個(gè)類顯得很冗余。順著正常的思路,將制作匹薩的方法從這個(gè)類里面剝離出去單獨(dú)形成一個(gè)類,這個(gè)類就像生產(chǎn)對(duì)象的工廠,只要你告訴它該生產(chǎn)的產(chǎn)品的型號(hào),它就生產(chǎn)對(duì)應(yīng)的對(duì)象再發(fā)送給客戶。

          按照書(shū)中的例子,如果匹薩店開(kāi)在同一個(gè)城市以內(nèi),匹薩的風(fēng)味多樣,那么上述的模式很好地實(shí)現(xiàn)了上面的功能。但如果是連鎖店,每個(gè)地方的風(fēng)味不同呢?……

          是的,每個(gè)地方的風(fēng)味不同,但同一個(gè)地方不同匹薩的種類卻相當(dāng)有限。也就是說(shuō)可以有一個(gè)匹薩店父類,然后各地的分店是這個(gè)父類的子類。而其中最重要的制作匹薩的方法在父類中被聲明為虛函數(shù),由各個(gè)具體的子類來(lái)實(shí)現(xiàn)。這樣“工廠”又被搬回具體的類中間。

          具體如何使用,我個(gè)人覺(jué)得是要看情況的。上面兩個(gè)是工廠模式的兩種表現(xiàn)形式。

              對(duì)于后一種模式,里面用到的對(duì)象,比如例子中匹薩的原材料,同樣可以用工廠模式來(lái)實(shí)現(xiàn),這樣程序的結(jié)構(gòu)就相當(dāng)靈活了。

          posted on 2007-09-10 23:21 離弦之ray的技術(shù)天空 閱讀(236) 評(píng)論(0)  編輯  收藏 所屬分類: Design Pattern
          主站蜘蛛池模板: 霍山县| 大竹县| 新竹县| 芒康县| 天津市| 合阳县| 图木舒克市| 灵寿县| 汽车| 饶平县| 安义县| 新干县| 江山市| 竹北市| 株洲市| 磴口县| 富平县| 晋江市| 金阳县| 绥中县| 兴业县| 津南区| 沂南县| 凯里市| 大名县| 宁海县| 东兴市| 延安市| 庄浪县| 舒兰市| 平湖市| 都昌县| 株洲市| 宁陵县| 铜梁县| 内黄县| 大石桥市| 红桥区| 达州市| 宁乡县| 五大连池市|