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

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

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

    posts - 32,  comments - 149,  trackbacks - 0
        Software entities (classes, modules, function, etc.) should be open for extension, but closed for modification.
        軟件實體(模塊,類,方法等)應該對擴展開放,對修改關閉。

    開閉原則(OCP:Open-Closed Principle)是指在進行面向對象設計(OOD:Object Oriented Design)中,設計類或其他程序單位時,應該遵循:
    - 對擴展開放(open)
    - 對修改關閉(closed)
    的設計原則。

    開閉原則是判斷面向對象設計是否正確的最基本的原理之一。

    根據開閉原則,在設計一個軟件系統模塊(類,方法)的時候,應該可以在不修改原有的模塊(修改關閉)的基礎上,能擴展其功能(擴展開放)。
    - 擴展開放:某模塊的功能是可擴展的,則該模塊是擴展開放的。軟件系統的功能上的可擴展性要求模塊是擴展開放的。
    - 修改關閉:某模塊被其他模塊調用,如果該模塊的源代碼不允許修改,則該模塊修改關閉的。軟件系統的功能上的穩定性,持續性要求是修改關閉的。

    這也是系統設計需要遵循開閉原則的原因
    1)穩定性。開閉原則要求擴展功能不修改原來的代碼,這可以讓軟件系統在變化中保持穩定。
    2)擴展性。開閉原則要求對擴展開放,通過擴展提供新的或改變原有的功能,讓軟件系統具有靈活的可擴展性。
    遵循開閉原則的系統設計,可以讓軟件系統可復用,并且易于維護。


    開閉原則的實現方法
    為了滿足開閉原則的 對修改關閉(closed for modification) 原則以及擴展開放(open for extension) 原則,應該對軟件系統中的不變的部分加以抽象,在面向對象的設計中,
    - 可以把這些不變的部分加以抽象成不變的接口,這些不變的接口可以應對未來的擴展;
    - 接口的最小功能設計原則。根據這個原則,原有的接口要么可以應對未來的擴展;不足的部分可以通過定義新的接口來實現;
    - 模塊之間的調用通過抽象接口進行,這樣即使實現層發生變化,也無需修改調用方的代碼。

    接口可以被復用,但接口的實現卻不一定能被復用。接口是穩定的,關閉的,但接口的實現是可變的,開放的。可以通過對接口的不同實現以及類的繼承行為等為系統增加新的或改變系統原來的功能,實現軟件系統的柔軟擴展。

    簡單地說,軟件系統是否有良好的接口(抽象)設計是判斷軟件系統是否滿足開閉原則的一種重要的判斷基準。現在多把開閉原則等同于面向接口的軟件設計。

    開閉原則的相對性
    軟件系統的構建是一個需要不斷重構的過程,在這個過程中,模塊的功能抽象,模塊與模塊間的關系,都不會從一開始就非常清晰明了,所以構建100%滿足開閉原則的軟件系統是相當困難的,這就是開閉原則的相對性。但在設計過程中,通過對模塊功能的抽象(接口定義),模塊之間的關系的抽象(通過接口調用),抽象與實現的分離(面向接口的程序設計)等,可以盡量接近滿足開閉原則。
    posted on 2009-03-28 14:15 chunkyo 閱讀(475) 評論(0)  編輯  收藏 所屬分類: 系統設計和設計模式
    <2009年3月>
    22232425262728
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234

    這個博客主要是關于java技術和開源技術,大家一起來進步了!

    常用鏈接

    留言簿(12)

    隨筆分類

    隨筆檔案

    文章分類

    收藏夾

    DotNet

    Java技術網站

    Linux VS Unix

    其他常去網站

    常光顧的BLOG

    文學類網站

    游戲類網站

    最新隨筆

    搜索

    •  

    積分與排名

    • 積分 - 196805
    • 排名 - 293

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: rh男男车车的车车免费网站| 日韩免费一区二区三区在线播放| 亚洲VA中文字幕不卡无码| 久久99精品国产免费观看| 亚洲宅男精品一区在线观看| 亚洲AV无码成人精品区大在线| 精品四虎免费观看国产高清午夜| 亚洲精品网站在线观看你懂的| 永久久久免费浮力影院| 国产一区二区三区免费在线观看| a级毛片无码免费真人久久| 亚洲va乱码一区二区三区| 国产综合亚洲专区在线| 国产曰批免费视频播放免费s| 一级A毛片免费观看久久精品| 亚洲国产视频一区| 久久伊人亚洲AV无码网站| 一本无码人妻在中文字幕免费| 一级毛片不卡免费看老司机 | 亚洲精品第一国产综合野| 国产精品亚洲综合一区| 免费无码AV片在线观看软件| 免费无码又爽又刺激网站| 亚洲hairy多毛pics大全| 亚洲AV无码一区东京热久久| 免费在线黄色网址| 精品久久久久久久久免费影院| 黄色短视频免费看| 亚洲av无码专区首页| 亚洲国产成人久久99精品| 亚洲伊人久久大香线蕉综合图片| 成人永久免费高清| 黄瓜视频高清在线看免费下载| 久久精品国产免费一区| 一级女性全黄生活片免费看| 亚洲精品无播放器在线播放| 亚洲第一精品电影网| 亚洲AV日韩AV永久无码免下载 | 国产无遮挡吃胸膜奶免费看视频 | 最近免费中文字幕大全高清大全1| 亚洲激情电影在线|