<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-200  評論-148  文章-15  trackbacks-0
    4.1 什么是開閉原則

    ☆ 開閉原則指的是一個軟件實體應對對擴展開發,對修改關閉(Software entities should be open for extension, but closed for modification)。這個原則是說在設計一個模塊的時候,應對使這個模塊可以在不被修改的前提下被擴展,換言之,應對可以不必修改源代碼的情況下 改變這個模塊的行為。

    ☆ 滿足開閉原則的軟件系統的優越性:
    ① 通過擴展已有的軟件系統,可以提供新的行為,以滿足對軟件的新需求,使變化中的軟件系統有一定的適應性和靈活性。
    ② 已有的軟件模塊,特別是最重要的抽象層模塊不能再修改,這就使變化中的軟件系統有一定的穩定性和延續性。

    ξ4.2 實現開閉原則的關鍵
    抽 象化是解決問題的關鍵,在面向對象的編程語言里,可以給系統定義出一套相對較為固定的抽象設計,此設計允許無窮無盡的行為在實現層被實現。在語言里,可以 給出一個或多個抽象類或者接口,規定出所有的具體類必須提供的方法的特征作為系統設計的抽象層。這個抽象層預見了所有的可擴展性,因此,在任何擴展情況下 都不會改變。這就使得系統的抽象不需要修改,從而滿足了開閉原則的第二條,對修改關閉。
    同時,由于從抽象層導出一個或多個新的具體類可以改變系統的行為,因此系統的設計對擴展是開放的,這就滿足了開閉原則的第一條。

    ☆ 對可變性的封裝原則
    這是對開閉原則的另外一種描述,它講的是找到一個系統的可變因素,將之封裝起來。該原則意味著兩點:
    ① 一種可變性不應當散落在代碼的很多角落,而應當封裝到一個對象里面。繼承應當被看做是封裝變化的方法,而不應該被認為是一種從一般對象生成特殊對象的方法。
    ② 一種可變性不應當與另外一種可變性混合在一起。這意味著一般的繼承層次不會超過兩層。

    關鍵知識點:
    ☆ 開閉原則的概念,軟件實體對擴展開發,對修改關閉;
    ☆ 實現開閉原則的關鍵,利用接口或抽象類抽象出系統的抽象層,抽象層不變,利用實現層進行擴展;
    ☆ 對可變性的封裝,將可變的元素封裝起來,防止改變擴散到整個應用;
    ☆ 注意控制封裝的粒度,不要將兩種可變性封裝到一起;
    ☆ 繼承是用來封裝可變性的,一般的繼承層次不要超過兩層;
    ☆ 策略模式是對開閉原則的很好詮釋,其他還有工廠模式、建造模式、橋接模式、門面模式、調停者模式、訪問者模式和迭代子模式等;
    ☆ 對“將條件轉移語句改寫成多態性”的重構行為應當遵循開閉原則,防止多態性污染;
    ☆ java下的單方法接口通常用來實現函數指針或者委托的功能;
    ☆ 任何一棵繼承樹都要以抽象類為根,具體類不是用來繼承的,更不要從工具類繼承;
    ☆ 抽象類要擁有盡可能多的共同代碼,同時擁有盡可能少的數據。
    ☆ 當Coad條件全部滿足時,才應當考慮使用繼承:派生類是基類的一個特殊種類,而不是其的一個角色,也就是說要區分“Has-a”和“Is-a”;永遠不 會出現需要將派生類換成另外一個類的派生類的情況;派生類具有擴展基類的責任而不是具有置換或注銷基類的責任;只有在分類學角度上有意義時,才可以使用繼 承。?

    ?

    posted on 2008-02-01 09:21 無聲 閱讀(4898) 評論(1)  編輯  收藏 所屬分類: 職場生活

    評論:
    # re: 什么是開閉原則 2008-03-07 15:21 | wq
    設計的基礎知識了





    Java架構俱樂部,QQ群2826942 ,交流Java架構,領域模型,設計模式,AOP,IOC,輕量級,DDD,項目管理,設計思想等問題,聚集經驗豐富的高級程序員,架構師,項目經理等交流以上層面較高的問題。歡迎各位有識之士加入,共同探討、發表高見、廣結精英。為了使各位成員免受無聊信息和低端問題的打擾,請盡量避免討論代碼實現等入門級問題,維護本群的氛圍和討論質量。  回復  更多評論
      
    主站蜘蛛池模板: 亚洲乱码无码永久不卡在线| 又粗又大又长又爽免费视频 | 色欲aⅴ亚洲情无码AV蜜桃| 国产精品色拉拉免费看| 亚洲人成网站日本片| 青娱分类视频精品免费2| 亚洲国产成人精品电影| 日本免费人成视频在线观看| 久久精品国产精品亚洲色婷婷| 国产一级片免费看| 久久精品蜜芽亚洲国产AV| 曰批全过程免费视频播放网站| 亚洲av无码不卡久久| 妞干网在线免费观看| 国产精品观看在线亚洲人成网| 免费人成无码大片在线观看| caoporm碰最新免费公开视频| 亚洲av中文无码乱人伦在线r▽ | a在线视频免费观看在线视频三区| 伊人亚洲综合青草青草久热| 免费精品99久久国产综合精品| 亚洲综合综合在线| 免费电影在线观看网站| 亚洲AV日韩AV永久无码色欲| 亚洲人成网站观看在线播放| 波多野结衣免费一区视频| 亚洲综合久久久久久中文字幕| 成人性生交大片免费看午夜a| 免费国产va在线观看| 国产亚洲精品va在线| 日本三级2019在线观看免费| 羞羞漫画小舞被黄漫免费| 亚洲国产精品高清久久久| 999久久久免费精品国产| 黄色一级视频免费观看| 亚洲国产精品不卡在线电影| 麻豆国产人免费人成免费视频| 中国videos性高清免费| 亚洲欧洲国产综合| 亚洲午夜爱爱香蕉片| 免费观看激色视频网站(性色)|