簡述:對修改關閉,對擴展開放編程
解讀:需求變動時,儘可能不要修改已有的代碼。this
簡述:一個類不該承擔過多的職責,或者說,就一個類而言,應該只有一個引發它變化的緣由設計
解讀:一個類不能承擔過多的功能,只專心一件事,並把這件事作好。對象
優勢:繼承
小結:變動是必然的,若是單一職責遵照的好,當修改一個功能時,能夠顯著下降對其餘功能的影響。接口
簡述:全部引用父類(基類)的地方,必須能透明地使用其子類的對象。開發
解讀:繼承關係中,能用父類的地方,那麼其任何子類也能夠被正常調用,因此子類儘可能不要修改父類的方法擴展
簡述:抽象不該該依賴於細節,細節當依賴於抽象。換言之,要針對接口編程,而非針對實現編程。引用
解讀:上述中抽象可簡單理解爲接口,細節就是接口的實現類。經過抽象或接口實現類與類之間的依賴關係程序
簡述:使用多個專門的接口,不使用單一的總接口。創建單一接口,不要創建龐大/臃腫的接口。
解讀:定義一個接口時不要定義的大而廣,而是把他們分割成一些更細小的接口。通常不知足單一職責原則都不知足接口隔離原則。
小結:接口隔離原則核心思想就是細化接口,提升程序的靈活性。接口不能過小,若是過小會致使系統中接口氾濫,不利於維護。
簡述:一個實體儘量少的與另外一個實體發生相互做用。
解讀:其餘定義:不要和「陌生人」說話、只與你的朋友通訊等。
小結:迪米特的目的就是下降系統的耦合度,使類與類之間保持鬆散的耦合關係。
總結
開閉原則,爲總大綱:要對擴展開發,對修改關閉
單一職責,告訴咱們實現類的功能不要太多
里氏替換,告訴咱們不要破壞類的繼承關係
依賴倒置,告訴咱們要面向接口編程
接口隔離,告訴咱們在設計接口時要精簡單一
迪米特法則,告訴咱們下降耦合度