開裏和依單迪 合成聚合複用編程
面向對象中的五大設計原則:spa
solid: srp ocp lod isp dip設計
srp:Single responsibility principle對象
ocp:Open Closed Principle繼承
lod:Law of Demeter接口
isp:Interface-Segregation Principleip
dip:Dependence Inversion Principleci
開放封閉原則(OCP,Open Closed Principle)是全部面向對象原則的核心。軟件設計自己所追求的目標就是封裝變化、下降耦合,而開放封閉原則正是對這一目標的最直接體現。開發
關於開放封閉原則,其核心的思想是:
it
軟件實體應該是可擴展,而不可修改的。也就是說,對擴展是開放的,而對修改是封閉的。
所以,開放封閉原則主要體如今兩個方面:
對擴展開放,意味着有新的需求或變化時,能夠對現有代碼進行擴展,以適應新的狀況。
對修改封閉,意味着類一旦設計完成,就能夠獨立完成其工做,而不要對類進行任何修改。
父類能夠由子類替換
里氏替換原則(Liskov Substitution Principle LSP)面向對象設計的基本原則之一。 里氏替換原則中說,任何基類能夠出現的地方,子類必定能夠出現。 LSP是繼承複用的基石,只有當衍生類能夠替換掉基類,軟件單位的功能不受到影響時,基類才能真正被複用,而衍生類也可以在基類的基礎上增長新的行爲。
A.高層次的模塊不該該依賴於低層次的模塊,他們都應該依賴於抽象。
B.抽象不該該依賴於具體實現,具體實現應該依賴於抽象。
依賴倒置原則(Dependence Inversion Principle)是程序要依賴於抽象接口,不要依賴於具體實現。簡單的說就是要求對抽象進行編程,不要對實現進行編程,這樣就下降了客戶與實現模塊間的耦合。
一個類一個職責,不該分配過多職責到一個類上
單一職責原則(SRP:Single responsibility principle)又稱單一功能原則,面向對象五個基本原則(SOLID)之一。它規定一個類應該只有一個發生變化的緣由。該原則由羅伯特·C·馬丁(Robert C. Martin)於《敏捷軟件開發:原則、模式和實踐》一書中給出的。
也叫最少知識原則,若是兩個類之間沒有必要直接通訊,那麼能夠經過第三個類進行轉發這個調用。
迪米特法則(Law of Demeter)又叫做最少知識原則(Least Knowledge Principle 簡寫LKP),就是說一個對象應當對其餘對象有儘量少的瞭解,不和陌生人說話。英文簡寫爲: LoD.
接口隔離原則(Interface-Segregation Principle):使用多個小的專門的接口,而不要使用一個大的總接口。
對於接口隔離原則,其核心思想是:使用多個小的專門的接口,而不要使用一個大的總接口。
具體而言,接口隔離原則體如今:接口應該是內聚的,應該避免「胖」接口。一個類對另一個類的依賴應該創建在最小的接口上,不要強迫依賴不用的方法,這是一種接口污染。
接口有效地將細節和抽象隔離,體現了對抽象編程的一切好處,接口隔離強調接口的單一性。而胖接口存在明顯的弊端,會致使實現的類型必須徹底實現接口的全部方法、屬性等;而某些時候,實現類型並不是須要全部的接口定義,在設計上這是「浪費」,並且在實施上這會帶來潛在的問題,對胖接口的修改將致使一連串的客戶端程序須要修改,有時候這是一種災難。在這種狀況下,將胖接口分解爲多個特色的定製化方法,使得客戶端僅僅依賴於它們的實際調用的方法,從而解除了客戶端不會依賴於它們不用的方法。
分離的手段主要有如下兩種:一、委託分離,經過增長一個新的類型來委託客戶的請求,隔離客戶和接口的直接依賴,可是會增長系統的開銷。二、多重繼承分離,經過接口多繼承來實現客戶的需求,這種方式是較好的。
表示強的擁有關係,合成指的是總體由部分組成,人是由四肢組成的,四肢和人的關係便是組合關係。
表示弱的擁有關係,如,人和人羣,便是一種弱的擁有關係 。
A對象包含B對象,但B對象不必定屬於A的一部分,區別於組合
字面理解是再一次使用、利用,指的是設計或代碼能夠複用到其它地方。
一樣一段代碼能夠被複用到不一樣的業務場景中去。