離弦之Ray

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            55 Posts :: 0 Stories :: 33 Comments :: 0 Trackbacks
           

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

          Factory Pattern

          書中舉了匹薩店的例子,一開始的類,將制作不同類型匹薩的方法都包含在里面,整個類顯得很冗余。順著正常的思路,將制作匹薩的方法從這個類里面剝離出去單獨形成一個類,這個類就像生產對象的工廠,只要你告訴它該生產的產品的型號,它就生產對應的對象再發送給客戶。

          按照書中的例子,如果匹薩店開在同一個城市以內,匹薩的風味多樣,那么上述的模式很好地實現了上面的功能。但如果是連鎖店,每個地方的風味不同呢?……

          是的,每個地方的風味不同,但同一個地方不同匹薩的種類卻相當有限。也就是說可以有一個匹薩店父類,然后各地的分店是這個父類的子類。而其中最重要的制作匹薩的方法在父類中被聲明為虛函數,由各個具體的子類來實現。這樣“工廠”又被搬回具體的類中間。

          具體如何使用,我個人覺得是要看情況的。上面兩個是工廠模式的兩種表現形式。

              對于后一種模式,里面用到的對象,比如例子中匹薩的原材料,同樣可以用工廠模式來實現,這樣程序的結構就相當靈活了。

          posted on 2007-09-10 23:21 離弦之ray的技術天空 閱讀(240) 評論(0)  編輯  收藏 所屬分類: Design Pattern
          主站蜘蛛池模板: 炎陵县| 铜梁县| 巫山县| 铁力市| 开鲁县| 离岛区| 堆龙德庆县| 黄山市| 大埔区| 红桥区| 南投县| 永吉县| 林口县| 扶沟县| 大姚县| 卓尼县| 大兴区| 屏南县| 布尔津县| 舒兰市| 凤阳县| 丰城市| 宜兴市| 湾仔区| 岳池县| 康定县| 铁岭县| 吉安县| 高台县| 大英县| 乐平市| 墨玉县| 永新县| 文山县| 濮阳县| 大连市| 法库县| 沛县| 池州市| 咸阳市| 深州市|