<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-37  評論-58  文章-4  trackbacks-0
          組合模式:將對象以樹形結構組織起來,以達成“部分-整體” 的層次結構,使得客戶端對單個對象和組合對象的使用具有一致性.
    適用環境:

    u       你想表示對象的部分-整體層次結構。

    u       你希望用戶忽略組合對象與單個對象的不同,用戶將統一地使用組合結構中的所有對象。

    Composite好處:
    1.使客戶端調用簡單,客戶端可以一致的使用組合結構或其中單個對象,用戶就不必關系自己處理的是單個對象還是整個組合結構,這就簡化了客戶端代碼。
    2.更容易在組合體內加入對象部件. 客戶端不必因為加入了新的對象部件而更改代碼。

    組合模式的組成

           抽象構件角色Component:它為組合中的對象聲明接口,也可以為共有接口實現缺省行為。

           樹葉構件角色Leaf:在組合中表示葉節點對象——沒有子節點,實現抽象構件角色聲明的接口。

           樹枝構件角色Composite:在組合中表示分支節點對象——有子節點,實現抽象構件角色聲明的接口;存儲子部件。

    下圖為組合模式的類圖表示。
    comp1.bmp
    安全性與透明性

       組合模式中必須提供對子對象的管理方法,不然無法完成對子對象的添加刪除等等操作,也就失去了靈活性和擴展性。但是管理方法是在Component中就聲明還是在Composite中聲明呢?

       一種方式是在Component里面聲明所有的用來管理子類對象的方法,以達到Component接口的最大化(如下圖所示)。目的就是為了使客戶看來在接口層次上樹葉和分支沒有區別——透明性。但樹葉是不存在子類的,因此Component聲明的一些方法對于樹葉來說是不適用的。這樣也就帶來了一些安全性問題。
       另一種方式就是只在Composite里面聲明所有的用來管理子類對象的方法(如下圖所示)。這樣就避免了上一種方式的安全性問題,但是由于葉子和分支有不同的接口,所以又失去了透明性。
      《設計模式》一書認為:在這一模式中,相對于安全性,我們比較強調透明性。對于第一種方式中葉子節點內不需要的方法可以使用空處理或者異常報告的方式來解決。
    如何使用Composite?

    posted on 2007-08-30 10:14 楓中玎玲 閱讀(288) 評論(0)  編輯  收藏 所屬分類: 設計模式

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 免费人人潮人人爽一区二区| 国产做国产爱免费视频| 国产免费人视频在线观看免费| 美女被免费视频网站a| 亚洲乱码无码永久不卡在线 | 色婷五月综激情亚洲综合| 卡1卡2卡3卡4卡5免费视频| 国产成人无码精品久久久久免费| 亚洲精品在线播放视频| 四虎影视永久免费观看地址 | 亚洲中文字幕无码一久久区| 1000部拍拍拍18免费网站| 综合偷自拍亚洲乱中文字幕| 亚洲国产AV无码专区亚洲AV| 在线精品免费视频无码的| a毛片免费观看完整| 亚洲日本VA午夜在线影院| 国产亚洲成av片在线观看| 大学生美女毛片免费视频| 久草免费手机视频| 羞羞漫画在线成人漫画阅读免费| 亚洲性一级理论片在线观看| 亚洲国产成人久久一区WWW| 中文字幕无码成人免费视频| 91国内免费在线视频| 亚洲av无码专区在线电影天堂| 亚洲AV永久无码区成人网站| 日本一线a视频免费观看| 67194国产精品免费观看| 一日本道a高清免费播放| 亚洲熟妇无码八V在线播放| 老司机亚洲精品影院无码| 亚洲国产小视频精品久久久三级| 亚洲人成网站免费播放| 99在线免费观看视频| 九九99热免费最新版| 国产亚洲美女精品久久| 亚洲中文字幕无码久久| 亚洲国产视频一区| 亚洲成在人天堂在线| 亚洲色欲色欲www在线丝|