Sealyu

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

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

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

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

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

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

          JAVAIO流的設(shè)計(jì)就大量運(yùn)用了裝飾模式??纯次覀兪煜さ拇a:


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


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

          層層包裝,增強(qiáng)功能。這就是裝飾模式的要旨。


          posted on 2009-12-23 14:15 seal 閱讀(244) 評(píng)論(0)  編輯  收藏 所屬分類: 設(shè)計(jì)模式
          主站蜘蛛池模板: 荥阳市| 厦门市| 应城市| 东宁县| 汤阴县| 固安县| 儋州市| 青浦区| 海丰县| 永靖县| 同心县| 铁岭县| 新沂市| 夏津县| 上高县| 天等县| 舟山市| 昌乐县| 岳阳市| 宜春市| 丹阳市| 遵化市| 古浪县| 彭水| 贺兰县| 吉安市| 乌拉特中旗| 甘孜| 钟祥市| 金昌市| 福州市| 积石山| 奉化市| 宣恩县| 平乡县| 桦甸市| 江达县| 怀来县| 宝清县| 博爱县| 青神县|