#單一職責原則編程
定義:一個類只負責一個功能領域中的相應職責(就一個類而言,應該只有一個引發它變化的緣由)設計
是實現高內聚,低耦合的指導方針對象
#開閉原則繼承
定義:一個軟件實體應對擴展開放,對修改關閉。即軟件實體應儘可能在不修改原有代碼的狀況下進行擴展。接口
爲了知足開閉原則,須要對系統進行抽象化設計,抽象化是開閉原則的關鍵。基礎
#里氏代換原則變量
定義:全部引用基類的地方必須能透明地使用其子類的對象擴展
是實現開閉原則的重要方式之一軟件
#依賴倒轉原則數據類型
定義:抽象不該該依賴於細節,細節應當依賴於抽象。換言之,要針對接口編程,而不是針對實現編程。
依賴倒轉原則要求咱們在程序代碼中傳遞參數時或在關聯關係中,儘可能引用層次高的抽象層類。即便用接口和抽象類進行變量類型聲明,參數類型聲明,方法返回類型聲明,以及數據類型的轉換等,而不要用具體類來作這些事情。
在大多數狀況下,開閉,里氏代換,依賴倒轉三個原則會同事出現,開閉是目標,里氏代換是基礎,依賴倒轉是手段。
#接口隔離
當一個接口太大時,咱們須要將它分割成一些更細小的接口
將大接口中的方法根據其職責不一樣分別放在不一樣的小接口中,以確保每一個接口使用都很方便,並承擔某一個單一角色。
接口應該儘可能細化,同時接口中的方法應該儘可能少,每一個接口中只包含一個客戶端(如子模塊或業務邏輯類)所需的方法便可(定製服務)。
接口也不能太少,會致使接口氾濫。
#合成複用
複用時要儘可能使用組合/聚合關係(關聯關係),少用繼承
組合可使系統更靈活,下降類與類的耦合度,一個類的變化對其餘類形成的影響相對較少。
使用繼承時,須要嚴格遵照里氏代換原則。
#迪米特法則(最少知道原則)
`不要和「陌生人」說話,只與直接朋友通訊`
引入一個合理的第三者,來下降現有對象的耦合度。