細心!用心!耐心!

          吾非文人,乃市井一俗人也,讀百卷書,跨江河千里,故申城一游; 一兩滴辛酸,三四年學業,五六點粗墨,七八筆買賣,九十道人情。

          BlogJava 聯系 聚合 管理
            1 Posts :: 196 Stories :: 10 Comments :: 0 Trackbacks
          Gof 的書中指到Bridge模式的目的:「將抽象部份與它的實現部份分離,使它們都可以獨立地變化。」

          這句話寫得簡短,這邊再作進一步的解釋,抽象部份指的是行為方面定義,實現方面指的是與特定平臺相依的代碼實現。

          一個實際的例子在Gof書中有提到,假設您定義了一個IWindow介面,這個介面只定義一些抽象的繪圖行為,而不涉及平臺的實作,今天您可以繼承這個類來開發適用於X Window的XWindow類,也可以繼承這個類來開發適用於Windows XP系統的WindowsXP類,為了善用系統資源,您在實作IWindow介面時,會將與系統相關的實現代碼撰寫在介面的實作中。
          Bridge

          假設今天您繼承了IWindow介面撰寫了一個I3DWindow介面,當中擴充一個drawBox()方法用於3D圖形的繪製,簡單的說, I3DWindow介面擴充了抽象行為,為了讓實現I3DWindow的類別也能在XWindow與Windows XP兩個不同的系統中運行,您必須再度撰寫與系統相關的實現代碼。
          Bridge

          簡單的說,抽象行為定義與平臺相關實現混雜在一起了,為了將抽象部份與它的實現部份分離,使它們都可以獨立地變化,您可以使用以下的結構。
          Bridge

          在上圖的右邊中,與平臺相關的實現部份,被與右邊抽象行方面的發展分開了,左邊的抽象部份您可以一直發展下去,而不再因為綁定了平臺特定實作方法,而使得整個結構越來越失去彈性。

          Bridge模式的 UML 類別結構圖如下:
          Bridge

          posted on 2007-04-17 10:42 張金鵬 閱讀(240) 評論(0)  編輯  收藏 所屬分類: Structural 模式
          主站蜘蛛池模板: 名山县| 建昌县| 容城县| 如东县| 兴安盟| 南京市| 遂平县| 石阡县| 措勤县| 维西| 山阳县| 乐陵市| 长阳| 寿光市| 易门县| 平阳县| 台中县| 锡林浩特市| 乡宁县| 醴陵市| 松江区| 沙坪坝区| 临西县| 梁山县| 庆城县| 开鲁县| 丰镇市| 克什克腾旗| 钟祥市| 安阳县| 平和县| 钦州市| 定日县| 屯昌县| 大足县| 诏安县| 太原市| 左贡县| 津市市| 司法| 阳江市|