-
特點(diǎn):了解Bridge模式需要先了解類(lèi)擴(kuò)展的兩個(gè)維度:類(lèi)的實(shí)現(xiàn)層次結(jié)構(gòu)和類(lèi)的功能層次結(jié)構(gòu)。
類(lèi)的實(shí)現(xiàn)層次結(jié)構(gòu):可理解為類(lèi)方法中算法的實(shí)現(xiàn)淮腾,如需修改或擴(kuò)展算法通常是利用多態(tài),通過(guò)繼承方式重寫(xiě)方法屉佳。
類(lèi)的功能層次結(jié)構(gòu):每個(gè)類(lèi)中的方法可理解為一個(gè)功能谷朝,功能的擴(kuò)展可以在原類(lèi)中增加,也可以通過(guò)繼承方式進(jìn)行擴(kuò)展武花。
由此可以看到徘禁,從類(lèi)的兩個(gè)維度進(jìn)行擴(kuò)展如果同時(shí)使用繼承的方式,則會(huì)變得混亂毫無(wú)章法髓堪,所以管理會(huì)出現(xiàn)困難,所以就需要將兩個(gè)維度的擴(kuò)展進(jìn)行分離娘荡,同時(shí)又不能將兩個(gè)維度的關(guān)系完全分離干旁。
Bridge模式就是起到了兩個(gè)維度的“分離”和“銜接”的作用。
與Adapter模式對(duì)比:看到Bridge模式后炮沐,首先想到的就是Adapter模式争群,對(duì)比后感覺(jué)Adapter模式就是Bridge模式的某個(gè)結(jié)構(gòu)分支,因?yàn)?strong>Adapter模式的實(shí)現(xiàn)方式可以是委托也可以是繼承大年,但細(xì)想后可能更傾向于類(lèi)的實(shí)現(xiàn)層次結(jié)構(gòu)分支换薄,因?yàn)?strong>Adapter模式是修改原接口API的實(shí)現(xiàn)后對(duì)外提供接口API玉雾。
- 角色:
角色名稱 | 角色職責(zé) |
---|---|
Abstraction(抽象化) | 定義功能層次的API |
Refined Abstraction(改善后的抽象化) | 增加Abstraction中未實(shí)現(xiàn)的新功能API |
Implementor(實(shí)現(xiàn)者) | 定義實(shí)現(xiàn)層的API,委托實(shí)現(xiàn)Abstraction中定義的API |
ConcreteImplement(具體實(shí)現(xiàn)) | 繼承實(shí)現(xiàn)Implementor中定義的API |
-
角色關(guān)系:
Bridge.png 代碼示例:Bridge
以上文獻(xiàn)參考:《圖解設(shè)計(jì)模式》