1、 開閉原則(ocp:open closed principle)
核心:對擴充套件開放,對修改關閉。即在設計乙個模組的時候,應當使這個模組可以在不被修改的前提下被擴充套件。
根據開閉原則,在設計乙個軟體系統模組(類,方法)的時候,應該可以在不修改原有的模組(修改關閉)的基礎上,能擴充套件其功能(擴充套件開放)。
2、 黎克特制替換原則(lsp:liskov substitution principle)
核心:在任何父類出現的地方都可以用他的子類來替代(子類應當可以替換父類並出現在父類能夠出現的任何地方)
1.子類必須完全實現父類的方法。在類中呼叫其他類是務必要使用父類或介面,如果不能使用父類或介面,則說明類的設計已經違背了lsp原則。
2.子類可以有自己的個性。子類當然可以有自己的行為和外觀了,也就是方法和屬性
3.覆蓋或實現父類的方法時輸入引數可以被放大。即子類可以過載父類的方法,但輸入引數應比父類方法中的大,這樣在子類代替父類的時候,呼叫的仍然是父類的方法。即以子類中方法的前置條件必須與超類中被覆蓋的方法的前置條件相同或者更寬鬆。
4.覆蓋或實現父類的方法時輸出結果可以被縮小。
3、 單一職責原則(srp:single responsibility principle)
核心:解耦和增強內聚性(高內聚,低耦合)
類被修改的機率很大,因此應該專注於單一的功能。如果你把多個功能放在同乙個類中,功能之間就形成了關聯,改變其中乙個功能,有可能中止另乙個功能,這時就需要新一輪的測試來避免可能出現的問題。
4、 介面隔離原則(isp:inte***ce segregation principle)
核心思想:不應該強迫客戶程式依賴他們不需要使用的方法。介面分離原則的意思就是:乙個介面不需要提供太多的行為,乙個介面應該只提供一種對外的功能,不應該把所有的操作都封裝到乙個介面當中.
分離介面的兩種實現方法:
1.使用委託分離介面。(separation through delegation)
2.使用多重繼承分離介面。(separation through multiple inheritance)
5、 依賴倒置原則(dip:dependence inversion principle)
核心:要依賴於抽象,不要依賴於具體的實現
1.高層模組不應該依賴低層模組,兩者都應該依賴其抽象(抽象類或介面)
2.抽象不應該依賴細節(具體實現)
3.細節(具體實現)應該依賴抽象。
三種實現方式:
1.通過建構函式傳遞依賴物件
2.通過setter方法傳遞依賴物件
3.介面宣告實現依賴物件
6、 迪公尺特原則(最少知識原則)(lod:law of demeter)
核心思想:乙個物件應當對其他物件有盡可能少的了解,不和陌生人說話。(類間解耦,低耦合)意思就是降低各個物件之間的耦合,提高系統的可維護性;在模組之間只通過介面來通訊,而不理會模組的內部工作原理,可以使各個模組的耦合成都降到最低,促進軟體的復用
注:1.在類的劃分上,應該建立有弱耦合的類;
2.在類的結構設計上,每乙個類都應當盡量降低成員的訪問許可權;
3.在類的設計上,只要有可能,乙個類應當設計成不變;
4.在對其他類的引用上,乙個物件對其它物件的引用應當降到最低;
5.盡量降低類的訪問許可權;
6.謹慎使用序列化功能;
7.不要暴露類成員,而應該提供相應的訪問器(屬性)
7、 組合/聚合復用原則(crp:composite reuse principle)
核心思想:盡量使用物件組合,而不是繼承來達到復用的目的。該原則就是在乙個新的物件裡面使用一些已有的物件,使之成為新物件的一部分:新的物件通過向這些物件的委派達到復用已有功能的目的。
復用的種類:
1.繼承
2.合成聚合
注:在復用時應優先考慮使用合成聚合而不是繼承
物件導向七大設計原則
乙個軟體實體如類 模組和函式應該對擴充套件開放,對修改關閉。用抽象構建框架,用實現擴充套件細節。提高軟體系統的可復用性及可維護性。高層模組不應該依賴底層模組,二者都應該依賴其抽象 抽象不應該依賴細節 細節應該依賴抽象 針對介面程式設計,不要針對實現程式設計 應用層 高層 應用層的呼叫依賴低層的實現。...
七大物件導向設計原則
迪公尺特法則又稱為最少知道法則,當類與類之間的關係越來越密切時,耦合度也隨之增大,改動其中的乙個類就會出現其他類也需要改動的問題,牽一髮而動全身,這種高耦合的現象顯然並不適用於我們物件導向的程式設計,不僅不利於清晰業務的完成,還大大增加了程式設計師維護的難度,因此,1987年美國northeaste...
物件導向的七大設計原則
1 單一職責原則 single responsibility principle 單一職責原則想表達的核心思想就是 高內聚 乙個模組只完成一項功能。在物件導向設計中,乙個類只應該負責一項職責,如果同時承擔太多職責,就等於把這些職責耦合在了一起。2 黎克特制替換原則 liskov substituti...