Bridge:主要實(shí)現(xiàn)的原理就是把接口 和實(shí)現(xiàn)分離開來, 保證他們?cè)賰蓚€(gè)不同的類層次結(jié)構(gòu)。
用Bridge而不是直接繼承實(shí)現(xiàn)主要有兩個(gè)好處:
1。 二進(jìn)制兼容。 假設(shè)我們的應(yīng)用程序需要用到format功能, 我們可能有要引用兩個(gè)第三方JAR包, formatInterface.JAR And formatImp.jar, 我們程序可能只引用了formatInterface.jar中的接口, 而formatImpl.jar里是什么我們根本不需要關(guān)心, 因?yàn)樗莊ormatInterface的實(shí)現(xiàn), 所以當(dāng)他改變的時(shí)候, 我們的應(yīng)用程序完全不用重新修改代碼, 編譯。可能我在LINUX下用LINUXFormatImpl.jar, 再WINDOW下use WindowFormatImpl.jar, but Application will never care about it.
?2. 接口與實(shí)現(xiàn)的分離, 實(shí)現(xiàn)不一定實(shí)現(xiàn)接口的內(nèi)容, 就是說實(shí)現(xiàn)同接口之間不是一一對(duì)應(yīng)的, 實(shí)現(xiàn)可能完成最原子的操作, 而接口通過持有一個(gè)實(shí)現(xiàn)的應(yīng)用, 組裝這些操作來實(shí)現(xiàn)接口。 比如說接口是createRectangle(), 實(shí)現(xiàn)可能只完成了createLine的操作, 然后有接口來組裝。
?Composite模式則要從全局的角度考慮對(duì)象之間的關(guān)系是否滿足“樹枝” 與 “樹葉”的關(guān)系, 如果滿足, 則需要定義一個(gè)樹枝與樹葉的集合接口Tree, 既包含樹枝接口add(tree)和樹葉接口getColor()。