在沒有瞭解到面向對象設計的7大原則前,我只是一隻豆子! 但豆子終將會成長不是嗎? 1.開閉原則:一個軟體實體應當對擴展開放,對修改關閉。也就是說在所涉及一個模塊的時候,應當使這個模塊可以在不被修改的前提下被擴展,即實現在不修改源代碼的情況下改變這個模塊的行為。 在開閉原則的定義中,軟體實體可以指一個
在沒有瞭解到面向對象設計的7大原則前,我只是一隻豆子! 但豆子終將會成長不是嗎?
1.開閉原則:一個軟體實體應當對擴展開放,對修改關閉。也就是說在所涉及一個模塊的時候,應當使這個模塊可以在不被修改的前提下被擴展,即實現在不修改源代碼的情況下改變這個模塊的行為。
在開閉原則的定義中,軟體實體可以指一個軟體模塊、一個由多個類組成的局部結構或一個讀庫的類。
抽象化是開閉原則的關鍵。
是添加新代碼完成方法的重構 而不是修改源代碼
聲明: 本文源自
2.依賴倒轉原則:高層模塊不應該依賴低層模塊,他們都應依賴抽象。抽象不應該依賴於細節,細節應該依賴於抽象。
要針對介面編程,不要針對實現編程。
代碼要依賴於抽象的類,而不要依賴於具體的類;要針對介面或抽象類編程,而不是針對具體類編程。
實現開閉原則的關鍵是抽象化,並且從抽象化導出具體化實現,如果說開閉原則是面向對象設計的目標的話,那麼依賴倒轉原則就是面向對
象設計的主要手段。
依賴倒轉原則的常用實現方式之一是在代碼中使用抽象類。而將具體類放在配置文件中。
依賴註入:構造註入:通過構造函數註入實例變數 設值註入:通過Setter方法註入視力變數 介面註入:通過介面方法註入實例變數
3.里氏替換原則: 子類出現在父類出現的位置,且不影響程式的運行。但是反過來就是父類對象是不能替換子類對象的。
有了里氏替換原則,才使繼承復用成為可能,
子類可以在父類的基礎上添加新的行為。(子類要比父類優秀)
子類型必須能替換掉他的父類型。
Pass :瞭解更多
4.單一職責原則:一個對象應該只包含單一的職責,且該職責要被封裝在具體的一個類中。
即一個類只做單一的事,避免繁雜類的出現,使得類的繼承和重載更加的方便。
耦合性(Coupling),也叫耦合度,是對模塊間關聯程度的度量。耦合的強弱取決與模塊間介面的複雜性、調用模塊的方式以及通過界面傳送
數據的多少。模塊間的耦合度是指模塊之間的依賴關係,包括控制關係、調用關係、數據傳遞關係。模塊間聯繫越多,其耦合性越強,同時
表明其獨立性越差。軟體設計中通常用耦合度和內聚度作為衡量模塊獨立程度的標準。劃分模塊的一個準則就是高內聚低耦合。
Pass :瞭解更多
5.介面隔離原則:客戶端不應該依賴於那些他不需要的介面。
在使用介面的時候,為客戶端提供指定的介面大小,按需分配,隱藏客戶端不需要的介面。
介面隔離原則是指:不使用單一的總介面,每一個介面應承擔相對獨立的角色。
類應完全依賴相應的專門的介面。
Pass: 瞭解更多
6.合成復用原則 :儘量使用對象組合,而不是使用繼承來達到復用的目的。
一般來說使用繼承的時候,要嚴格遵守里氏替換原則,基類的細節對於子類是可見的,這種方式屬於靜態的,
減少了程式的靈活性,如果基類發生改變,其子類也不得不隨之變動。
一般來說首先使用"組合/聚合" 降低類於類之間耦合度,減少類的變化對其他類的影響。
合成復用原則 :就是在一個新的對象里通過關聯關係(包括組合關係和聚合關係)來使用一些已有的對象,使之成為新對象的一部分;新對象通過委派調用已有對象的方法達到復用功能的目的。簡言之:復用時要儘量使用組合/聚合關係(關聯關係),少用繼承。
Pass 瞭解更多
7.迪米特法則:一個軟體實體儘可能少的和其他軟體實體發生相互作用。
減少對象與對象之間的直接交互,創建中間類, 通過中間類進行對象與對象間的間接交互,
當我們需要增加或刪除空間的時候,就只需在中間類中進行調整,無需修改已有控制項的源代碼。
降低程式之間的耦合度,使類於類之間呈現鬆散的耦合關係。程式更加的靈活。
靈活使用面向對象的準則,使我們的編程更加靈活,封裝性更好,復用性更高,易於維護。