省朝夕

           

          模式第二周--橋接模式

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


          舉例:
                  家里的家用電器,它們都是由開關控制的。假如電器是:電燈和電扇,而開關有圓形開關,方形開關等樣式,那么電器與開關的組合方式,類似笛卡爾積。此外,任何時候,我們都可以在不更換開關的情況下換掉燈泡,也可以在不接觸燈泡或者風扇的情況下更換開關,而不會存在燈和開關必須整體更換的情況。那么是怎么做到的呢?是通過電線來解耦的,我們在抽象這一問題時,雖然沒有電線,但是有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)  編輯  收藏 所屬分類: 一周一模式

          導航

          統計

          留言簿

          文章分類

          文章檔案

          搜索

          最新評論

          主站蜘蛛池模板: 老河口市| 莎车县| 霍州市| 肥东县| 治多县| 中方县| 西乌| 高淳县| 焦作市| 绵竹市| 海伦市| 喀喇沁旗| 临高县| 唐山市| 无极县| 洪洞县| 边坝县| 绥阳县| 沾化县| 海安县| 额尔古纳市| 东丰县| 宁强县| 西昌市| 凤城市| 威宁| 开封市| 吕梁市| 昌邑市| 陇南市| 河南省| 大英县| 娄烦县| 泰安市| 大邑县| 涟源市| 信宜市| 宝兴县| 阿图什市| 武邑县| 吕梁市|