2022年1月8日 星期六

[Geroge]面向對象設計-開放封閉原則OCP

開放封閉原則(Open-Closed Principle)

定義: 對擴展開放, 對修改關閉, 軟體實體盡量在不修改原有程式碼的情況下進行擴展

高內聚, 低耦合

優點: 降低了程式各部分之間的耦合性, 為了滿足開閉原則, 需要對系統進行抽象化設計, 抽象化是開閉原則的關鍵

其適應性, 靈活性, 穩定性都比較好, 當已有軟體系統需要增加新的功能時, 不需要對作為系統基礎的抽象層進行修改, 只需要在原有基礎上附加新的模塊就能實現所需要添加的功能, 增加的新模塊對原有的模塊完全沒有影響, 或影響很小, 這樣就無需為原有模塊進行重新測試

範例: 我們有pie bar line三個圖形的類別, 並有一個ChartDisplayManager類別, 目前當有新增新的圖要顯示, 就必須做兩個地方修改, 1 新增一個類 2對原有的ChartDisplayManager進行修改

而2的部分就違反了封閉原則, 他每次新增都修改了原程式碼















那修改方式這樣, 我們要將原有的chart抽象, 新增一個父類BaseChart




那我們所有的chart都來繼承這個父類







然後我們的ChartManager都調用這個BaseChart















這時, 當我們需要新增一個圖表, 我們只需要新增一個類別去繼承chart類別

而對ChartDisplayManager就不用修改, 意即對修改封閉


參考: 

https://www.youtube.com/watch?v=RVddmAln3OU&list=PLGmd9-PCMLhb16ZxeSy00qUsBazXgJyfM&index=5

https://github.com/iw5420/geroge-design-pattern


沒有留言:

張貼留言

20250414

才發現上班第一天, 我挑的日期有點猛, 民國114年4月14日第一天上班 超詭異諧音XDD, 今天填一堆表的時候發現 --- 總經理是在業界很有經驗的人, 今天他分享一個我覺得很猛 他每天4:30起床, 每天跑10公里 真是一個成功人士的模板 我想稍微學習一下 --- 職位-資深...