1. 單一職責原則(Single Responsibility Principle) 2. 里氏替換原則(Liskov Substitution Principle) 3. 依賴倒置原則(Dependence Inversion Principle) 4. 接口隔離原則(Interface Segregation Principle) 5. 迪米特法則(Law Of Demeter) 6. 開閉原則(Open Close Principle) 1、單一職責原則(SRP) 若是一個類承擔的職責過多,就等於把這些職責耦合在了一塊兒。一個職責的變化可能會削弱或者抑制這個類完成其餘職責的能力。這種耦合會致使脆弱(fragile)設計,當變化發生時,設計會遭受到意想不到的破壞。 2、開放-封閉原則(OCP) 1.「對於擴展是開放的」(Open for extension)。 這意味着模塊的行爲是能夠擴展的。當應用的需求改變時,咱們能夠對模塊進行擴展,使其具備知足那些改變的新行爲。換句話說,咱們能夠改變模塊的功能。 2.「對於更改是封閉的」(Closed for modification)。 對模塊行爲進行擴展時,沒必要改動模塊的源代碼或者二進制代碼。模塊的二進制可執行版本,不管是可連接的庫、DLL或者Java的.jar文件,都無需改動。 3、Liskov替換原則(LSP) 子類型(subtype)必須可以替換它們的基類型(base type) 4、依賴倒置原則(DIP) a.高層模塊不該該依賴於低層模塊。兩者都應該依賴於抽象。 b.抽象不該該依賴於細節。細節應該依賴於抽象。 5、接口隔離原則(ISP) 不該該強迫客戶依賴於它們不用的方法。接口的方法應該相關,儘可能把「胖」接口分離。