Sealyu

          --- 博客已遷移至: http://www.sealyu.com/blog

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            618 隨筆 :: 87 文章 :: 225 評論 :: 0 Trackbacks
          1.裝飾模式(Decorator):
          裝飾模式(Decorator)也叫包裝器模式(Wrapper)。GOF在《設計模式》一書中給出的定義為:動態(tài)地給一個對象添加一些額外的職責。就增加功能來說,Decorator模式相比生成子類更為靈活。
          裝飾模式的組成:

          1)        抽象構(gòu)件角色(Component):定義一個抽象接口,以規(guī)范準備接收附加責任的對象。

          2)        具體構(gòu)件角色(Concrete Component):這是被裝飾者,定義一個將要被裝飾增加功能的類。

          3)        裝飾角色(Decorator):持有一個構(gòu)件對象的實例,并定義了抽象構(gòu)件定義的接口。

          4)        具體裝飾角色(Concrete Decorator):負責給構(gòu)件添加增加的功能。

          JAVAIO流的設計就大量運用了裝飾模式。看看我們熟悉的代碼:


          裝飾模式的特點;
          (1) 裝飾對象和真實對象有相同的接口。這樣客戶端對象就可以以和真實對象相同的方式和裝飾對象交互。
          (2) 裝飾對象包含一個真實對象的索引(reference)
          (3) 裝飾對象接受所有的來自客戶端的請求。它把這些請求轉(zhuǎn)發(fā)給真實的對象。
          (4) 裝飾對象可以在轉(zhuǎn)發(fā)這些請求以前或以后增加一些附加功能。這樣就確保了在運行時,不用修改給定對象的結(jié)構(gòu)就可以在外部增加附加的功能。在面向?qū)ο蟮脑O計中,通常是通過繼續(xù)來實現(xiàn)對給定類的功能擴展。


          BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("..")));

          層層包裝,增強功能。這就是裝飾模式的要旨。


          posted on 2009-12-23 14:15 seal 閱讀(248) 評論(0)  編輯  收藏 所屬分類: 設計模式
          主站蜘蛛池模板: 华亭县| 营山县| 黄龙县| 梁山县| 罗甸县| 东兴市| 桂阳县| 灵石县| 西乡县| 聊城市| 台东市| 那坡县| 维西| 新民市| 呼伦贝尔市| 延川县| 徐汇区| 乌恰县| 彭泽县| 九寨沟县| 清原| 皮山县| 阿拉善盟| 全南县| 岱山县| 余江县| 明水县| 佳木斯市| 景宁| 昌平区| 江孜县| 桂东县| 富阳市| 宁强县| 安徽省| 建湖县| 盐亭县| 东山县| 永平县| 勃利县| 蒲城县|