省朝夕

           

          模式第二周--橋接模式

          橋接模式:把抽象和實現解耦,使得它們可以獨立地變化。十分常見,可能你已經用到了,但是還不知道它就是這種模式。
          類圖:


          舉例:
                  家里的家用電器,它們都是由開關控制的。假如電器是:電燈和電扇,而開關有圓形開關,方形開關等樣式,那么電器與開關的組合方式,類似笛卡爾積。此外,任何時候,我們都可以在不更換開關的情況下換掉燈泡,也可以在不接觸燈泡或者風扇的情況下更換開關,而不會存在燈和開關必須整體更換的情況。那么是怎么做到的呢?是通過電線來解耦的,我們在抽象這一問題時,雖然沒有電線,但是有OOD的封裝。
                  可以定義抽象開關類:Switch,有待實現的方法:on(),off(),然后定義圓形開關CircleSwitch,SquareSwitch都繼承自抽象Switch。同樣我們抽象出IElectricalEquipment電器,有powOn(),powerOff()方法,然后定義點燈Light和電扇Fan類實現IElectricalEquipment接口。現在需要讓電器與開關相連,可以采用:抽象類Switch中,持有IElectricalEquipment電器接口,也就是按照上面的類圖可以實現電器與開關的解耦,并符合OCP原則。代碼見:https://github.com/hejianchao/Patterns-in-Java 。

          推薦:
          http://blog.163.com/xiaokangzhijia@126/blog/static/1659548562010111843618596/

          posted on 2013-04-15 02:27 hejianchao 閱讀(176) 評論(0)  編輯  收藏 所屬分類: 一周一模式

          導航

          統計

          留言簿

          文章分類

          文章檔案

          搜索

          最新評論

          主站蜘蛛池模板: 辉县市| 睢宁县| 交口县| 武鸣县| 车致| 五台县| 贵港市| 呼和浩特市| 前郭尔| 思茅市| 宣城市| 临夏市| 高安市| 重庆市| 金山区| 方城县| 炉霍县| 苍溪县| 鸡泽县| 商都县| 湖口县| 滁州市| 将乐县| 淮北市| 安新县| 积石山| 万源市| 襄城县| 法库县| 土默特左旗| 乌兰县| 红河县| 玉环县| 敦煌市| 蒙山县| 太仆寺旗| 荣昌县| 淮安市| 吉安市| 诸城市| 梁平县|