oop原則

凱ZSK發表於2020-09-23

OOP設計原則

OCP(Open-Closed Principle),開放封閉原則:軟體實體應該擴充套件開放、修改封閉。
實現:合理劃分構件,一種可變性不應當散落在程式碼的很多角落裡,而應當被封裝到一個物件裡;一種可變性不應當與另一個可變性混合在一起。

**DIP(Dependency Inversion Principle),依賴倒置原則:**擺脫程式導向程式設計思想中高層模組依賴於低層實現,抽象依賴於具體細節。OOP中要做到的是,高層模組不依賴於低層模組實現,二者都依賴於抽象;抽象不依賴於具體實現細節,細節依賴於抽象。
實現:應該通過抽象耦合的方式,使具體類最大可能的僅與其抽象類(介面)發生耦合;程式在需要引用一個物件時,應當儘可能的使用抽象型別作為變數的靜態型別,這就是針對介面程式設計的含義。

**LSP(Liskov Substitution Principle),Liskov替換原則:**繼承思想的基礎。“只有當衍生類可以替換掉基類,軟體單位的功能不會受到影響時,基類才真正被複用,而衍生類也才能夠在基類的基礎上增加新的行為。”

**ISP(Interface Insolation Principle),介面隔離原則:**介面功能單一,避免介面汙染。
實現:一個類對另外一個類的依賴性應當是建立在最小的介面上的。使用多個專門的介面比使用單一的總介面要好。

**SRP(Single Resposibility Principle),單一職責原則:**就一個類而言,應該僅有一個引起它變化的原因。 如果一個類的職責過多,就等於把這些職責耦合在一起,一個職責的變化可能會抑止這個類完成其他職責的能力。

**CARP(Composite/Aggregate Reuse Principle),合成/聚合複用原則:**設計模式告訴我們物件委託優於類繼承,從UML的角度講,就是關聯關係優於繼承關係。儘量使用合成/聚合、儘量不使用繼承。
實現:在一個新的物件裡面使用一些已有的物件,使之成為新物件的一部分,以整合其功能。

**LoD(Law Of Demeter or Principle of Least Knowledge),迪米特原則或最少知識原則:**就是說一個物件應當對其他物件儘可能少的瞭解。即只直接與朋友通訊,或者通過朋友與陌生人通訊。
朋友的定義(或關係):
(1)當前物件本身。
(2)以參量的形式傳入到當前物件方法中的物件。
(3)當前物件的例項變數直接引用的物件。
(4)當前物件的例項變數如果是一個聚集,那麼聚集中的元素也都是朋友。
(5)當前物件所建立的物件。
實現:
(1)在類的劃分上,應當建立有弱耦合的類。類之間的耦合越弱,就越有利於複用。
(2)在類的結構設計上,每一個類都應當儘量降低成員的訪問許可權。一個類不應當public自己的屬性,而應當提供取值和賦值的方法讓外界間接訪問自己的屬性。
(3)在類的設計上,只要有可能,一個類應當設計成不變類。
(4)在對其它物件的引用上,一個類對其它物件的引用應該降到最低。
(5)儘量限制區域性變數的有效範圍.

相關文章