開放封閉原則(Open-Closed Principle)
定義: 對擴展開放, 對修改關閉, 軟體實體盡量在不修改原有程式碼的情況下進行擴展
高內聚, 低耦合
優點: 降低了程式各部分之間的耦合性, 為了滿足開閉原則, 需要對系統進行抽象化設計, 抽象化是開閉原則的關鍵
其適應性, 靈活性, 穩定性都比較好, 當已有軟體系統需要增加新的功能時, 不需要對作為系統基礎的抽象層進行修改, 只需要在原有基礎上附加新的模塊就能實現所需要添加的功能, 增加的新模塊對原有的模塊完全沒有影響, 或影響很小, 這樣就無需為原有模塊進行重新測試
範例: 我們有pie bar line三個圖形的類別, 並有一個ChartDisplayManager類別, 目前當有新增新的圖要顯示, 就必須做兩個地方修改, 1 新增一個類 2對原有的ChartDisplayManager進行修改
而2的部分就違反了封閉原則, 他每次新增都修改了原程式碼
那修改方式這樣, 我們要將原有的chart抽象, 新增一個父類BaseChart
那我們所有的chart都來繼承這個父類
這時, 當我們需要新增一個圖表, 我們只需要新增一個類別去繼承chart類別
而對ChartDisplayManager就不用修改, 意即對修改封閉
參考:
https://www.youtube.com/watch?v=RVddmAln3OU&list=PLGmd9-PCMLhb16ZxeSy00qUsBazXgJyfM&index=5
https://github.com/iw5420/geroge-design-pattern
沒有留言:
張貼留言