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

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

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

    從橋接模式與策略模式談起

    橋接(Bridge)模式是結構型模式的一種,而策略(strategy)模式則屬于行為模式。以下是它們的UML結構圖。

    在橋接模式中,Abstraction通過聚合的方式引用Implementor。

     

    在策略模式中,Context也使用聚合的方式引用Startegy抽象接口。

     

    從他們的結構圖可知,在這兩種模式中,都存在一個對象使用聚合的方式引用另一個對象的抽象接口的情況,而且該抽象接口的實現可以有多種并且可以替換。可以說兩者在表象上都是調用者與被調用者之間的解耦,以及抽象接口與實現的分離。

    那么兩者的區別體現在什么地方呢?

    1. 首先,在形式上,兩者還是有一定區別的,對比兩幅結構圖,我們可以發現,在橋接模式中不僅Implementor具有變化(ConcreateImplementior),而且Abstraction也可以發生變化(RefinedAbstraction),而且兩者的變化是完全獨立的,RefinedAbstraction與ConcreateImplementior之間松散耦合,它們僅僅通過Abstraction與Implementor之間的關系聯系起來。而在策略模式中,并不考慮Context的變化,只有算法的可替代性。

    2. 其次在語意上,橋接模式強調Implementor接口僅提供基本操作,而Abstraction則基于這些基本操作定義更高層次的操作。而策略模式強調Strategy抽象接口的提供的是一種算法,一般是無狀態、無數據的,而Context則簡單調用這些算法完成其操作。

    3. 橋接模式中不僅定義Implementor的接口而且定義Abstraction的接口,Abstraction的接口不僅僅是為了與Implementor通信而存在的,這也反映了結構型模式的特點:通過繼承、聚合的方式組合類和對象以形成更大的結構。在策略模式中,Startegy和Context的接口都是兩者之間的協作接口,并不涉及到其它的功能接口,所以它是行為模式的一種。行為模式的主要特點就是處理的是對象之間的通信方式,往往是通過引入中介者對象將通信雙方解耦,在這里實際上就是將Context與實際的算法提供者解耦。

    所以相對策略模式,橋接模式要表達的內容要更多,結構也更加復雜。橋接模式表達的主要意義其實是接口隔離的原則,即把本質上并不內聚的兩種體系區別開來,使得它們可以松散的組合,而策略在解耦上還僅僅是某一個算法的層次,沒有到體系這一層次。從結構圖中可以看到,策略的結構是包容在橋接結構中的,橋接中必然存在著策略模式,Abstraction與Implementor之間就可以認為是策略模式,但是橋接模式一般Implementor將提供一系列的成體系的操作,而且Implementor是具有狀態和數據的靜態結構。而且橋接模式Abstraction也可以獨立變化。

     

    參考:呂震宇的設計模式隨筆——蠟筆與毛筆的故事

    Bridge Strategy 和State的區別 后續的討論,很有啟發。

    posted on 2007-04-25 15:44 雁過無痕 閱讀(6410) 評論(3)  編輯  收藏

    評論

    # re: 從橋接模式與策略模式談起[未登錄] 2007-11-16 09:11 Steve

    Good article!  回復  更多評論   

    # re: 從橋接模式與策略模式談起 2008-08-30 19:18 henryoung

    很好 終于理解了 主要從結構和實習上來區別
      回復  更多評論   

    # re: 從橋接模式與策略模式談起 2013-12-02 14:52 awu

    這樣一說,原來差別主要在細節上。  回復  更多評論   


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


    網站導航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     
    <2007年11月>
    28293031123
    45678910
    11121314151617
    18192021222324
    2526272829301
    2345678

    導航

    統計

    常用鏈接

    留言簿(7)

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲成在人线aⅴ免费毛片| 亚洲视频免费一区| 又粗又硬免费毛片| 丁香花在线观看免费观看图片| 日韩中文无码有码免费视频| 亚洲日韩AV无码一区二区三区人| 性短视频在线观看免费不卡流畅| 亚洲码一区二区三区| 亚洲一级免费视频| 久久亚洲精品国产亚洲老地址| 欧美a级成人网站免费| 亚洲欧美日韩中文二区| 国产自产拍精品视频免费看| 猫咪免费观看人成网站在线| 亚洲天堂中文字幕在线| 国产午夜精品免费一区二区三区| 亚洲av无码国产精品夜色午夜| 精品福利一区二区三区免费视频| 亚洲av产在线精品亚洲第一站| 国内大片在线免费看| 黄色毛片免费网站| 人人狠狠综合久久亚洲婷婷| 亚洲免费在线观看视频| 亚洲日韩精品无码专区| 免费jjzz在线播放国产| a级毛片高清免费视频就| 亚洲成a人片在线观看播放| 无码视频免费一区二三区| 色一情一乱一伦一视频免费看| 久久夜色精品国产亚洲av| 在线人成精品免费视频| 亚洲中文字幕无码mv| 久久久久亚洲AV成人网人人网站 | 久久综合日韩亚洲精品色| 亚洲成年人免费网站| 亚洲AV日韩AV永久无码色欲 | 67pao强力打造67194在线午夜亚洲| 无码国产精品一区二区免费式直播| 国产亚洲精品美女2020久久| 日韩va亚洲va欧洲va国产| 最近免费中文字幕大全|