1. 問題:軟體的很多部分是變化的,,而我們要擁抱變化,如何能做到擁抱變化呢?
2. 答案:給變化留出空間,讓它有空間去變化,讓它不要影響不變化的部分,讓它在擴充套件功能時不要影響已經完成的功能,讓它在改變自己功能的時候不要去影響其他不用改變的功能。
3. 給答案換個描述:上面這個答案引出了物件導向原則的最重要的原則---開閉原則,對修改關閉,對擴充套件開放。
4. 解決方式:如何做到開閉原則?引出了另一重大原則----依賴倒置,不依賴具體實現,依賴於抽象,簡單說就是,用的是介面或者抽象類,不用具體實現,當真正使用的時候依賴注入具體實現,那麼使用方的**,設計好介面和抽象類之後就基本不會改變,就做到了對修改關閉,而需要擴充套件或者修改現有功能時,只需要追加新的實現類或者修改現有實現類,就做到了對擴充套件開放。
5. 解決方式的技術基礎:就是原則----黎克特制替換原則,任何基類出現的地方都能用子類代替,就是說使用方用的雖然是介面和抽象類,但是真正呼叫時可以替換成他們的具體實現類,這個原則也是繼承復用的基石。
6. 剩餘原則:介面隔離,單一職責,最少知道(迪公尺特),多用組合少用繼承。
7.各個原則結合使用,終極目標就是設計出高內聚低耦合的系統。
物件導向設計原則
oo原則 封裝變化 多用組合,少用繼承 針對介面程式設計,不針對實現程式設計 為互動物件之間的松耦合而努力 類應該對擴充套件開放,對修改關閉 依賴抽象,不要依賴具體類 只和朋友交談 別找我,我會找你 類應該只有乙個改變的理由 從設計原則到設計模式 針對介面程式設計,而不是針對實現程式設計 客戶無需知...
物件導向設計原則
物件設計原則 物件導向設計原則 物件導向設計的基石是 開 閉 原則。開一閉 原則講的是 乙個軟體實體應當對擴充套件開放,對修改關閉。這個規則說的是,在設計乙個模組的時候,應當使這個模組可以在不被修改的前提下被擴充套件。從另外乙個角度講,就是所謂的 對可變性封裝原則 對可變性封裝原則 意味著兩點 1 ...
物件導向設計原則
oo原則 封裝變化 多用組合,少用繼承 針對介面程式設計,不針對實現程式設計 為互動物件之間的松耦合而努力 類應該對擴充套件開放,對修改關閉 依賴抽象,不要依賴具體類 只和朋友交談 別找我,我會找你 類應該只有乙個改變的理由 從設計原則到設計模式 針對介面程式設計,而不是針對實現程式設計 客戶無需知...