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

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

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

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

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

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

     

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

     

    從他們的結(jié)構(gòu)圖可知,在這兩種模式中,都存在一個(gè)對(duì)象使用聚合的方式引用另一個(gè)對(duì)象的抽象接口的情況,而且該抽象接口的實(shí)現(xiàn)可以有多種并且可以替換。可以說(shuō)兩者在表象上都是調(diào)用者與被調(diào)用者之間的解耦,以及抽象接口與實(shí)現(xiàn)的分離。

    那么兩者的區(qū)別體現(xiàn)在什么地方呢?

    1. 首先,在形式上,兩者還是有一定區(qū)別的,對(duì)比兩幅結(jié)構(gòu)圖,我們可以發(fā)現(xiàn),在橋接模式中不僅Implementor具有變化(ConcreateImplementior),而且Abstraction也可以發(fā)生變化(RefinedAbstraction),而且兩者的變化是完全獨(dú)立的,RefinedAbstraction與ConcreateImplementior之間松散耦合,它們僅僅通過(guò)Abstraction與Implementor之間的關(guān)系聯(lián)系起來(lái)。而在策略模式中,并不考慮Context的變化,只有算法的可替代性。

    2. 其次在語(yǔ)意上,橋接模式強(qiáng)調(diào)Implementor接口僅提供基本操作,而Abstraction則基于這些基本操作定義更高層次的操作。而策略模式強(qiáng)調(diào)Strategy抽象接口的提供的是一種算法,一般是無(wú)狀態(tài)、無(wú)數(shù)據(jù)的,而Context則簡(jiǎn)單調(diào)用這些算法完成其操作。

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

    所以相對(duì)策略模式,橋接模式要表達(dá)的內(nèi)容要更多,結(jié)構(gòu)也更加復(fù)雜。橋接模式表達(dá)的主要意義其實(shí)是接口隔離的原則,即把本質(zhì)上并不內(nèi)聚的兩種體系區(qū)別開(kāi)來(lái),使得它們可以松散的組合,而策略在解耦上還僅僅是某一個(gè)算法的層次,沒(méi)有到體系這一層次。從結(jié)構(gòu)圖中可以看到,策略的結(jié)構(gòu)是包容在橋接結(jié)構(gòu)中的,橋接中必然存在著策略模式,Abstraction與Implementor之間就可以認(rèn)為是策略模式,但是橋接模式一般Implementor將提供一系列的成體系的操作,而且Implementor是具有狀態(tài)和數(shù)據(jù)的靜態(tài)結(jié)構(gòu)。而且橋接模式Abstraction也可以獨(dú)立變化。

     

    參考:呂震宇的設(shè)計(jì)模式隨筆——蠟筆與毛筆的故事

    Bridge Strategy 和State的區(qū)別 后續(xù)的討論,很有啟發(fā)。

    posted on 2007-04-25 15:44 雁過(guò)無(wú)痕 閱讀(6410) 評(píng)論(3)  編輯  收藏

    評(píng)論

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

    Good article!  回復(fù)  更多評(píng)論   

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

    很好 終于理解了 主要從結(jié)構(gòu)和實(shí)習(xí)上來(lái)區(qū)別
      回復(fù)  更多評(píng)論   

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

    這樣一說(shuō),原來(lái)差別主要在細(xì)節(jié)上。  回復(fù)  更多評(píng)論   


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    <2008年8月>
    272829303112
    3456789
    10111213141516
    17181920212223
    24252627282930
    31123456

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(7)

    隨筆檔案

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 中文字幕在线免费观看| 青柠影视在线观看免费高清 | GOGOGO高清免费看韩国| 日韩成全视频观看免费观看高清| 亚洲国产日韩在线| 国产免费久久精品99re丫y| 亚洲乱人伦精品图片| 免费人成视频在线| 99久久婷婷国产综合亚洲| 在线精品免费视频无码的| 久久亚洲精品成人无码| 一本色道久久88综合亚洲精品高清| 免费人人潮人人爽一区二区| 亚洲国产人成精品| 国产一级高青免费| 亚洲午夜精品一区二区| 毛片免费视频在线观看| 亚洲国产成人精品无码区二本| 免费一级毛片不卡不收费| 中文字幕a∨在线乱码免费看| 亚洲av永久无码制服河南实里 | 国外成人免费高清激情视频 | 香蕉视频在线观看免费| 国产亚洲精品激情都市| 小草在线看片免费人成视久网| 亚洲一欧洲中文字幕在线| 国产成人aaa在线视频免费观看 | 亚洲熟女综合色一区二区三区| 免费看国产曰批40分钟| 在线观看免费无码视频| 亚洲另类精品xxxx人妖| 亚洲av午夜成人片精品电影| 久久aa毛片免费播放嗯啊| 亚洲а∨天堂久久精品9966| 亚洲精品视频在线观看你懂的| 最近免费中文字幕mv电影| 久久久久久久久无码精品亚洲日韩 | 五月婷婷免费视频| 亚洲欧洲日产国码www| 免费看国产精品麻豆| 免费h片在线观看网址最新|