定義:應該有且僅有一個緣由引發類的變動。java
定義:全部引用基類的地方必須能透明地使用其子類的對象算法
四層含義:編程
1.子類必須徹底實現父類的方法設計模式
2.子類能夠有本身的個性框架
3.覆蓋或實現父類的方法時輸入參數能夠被放大函數
4. 覆寫或實現父類的方法時輸出結果能夠被縮小spa
定義:高層模塊不該該依賴低層模塊,二者都應該依賴其抽象;抽象不該該依賴細節;細節應該依賴抽象。設計
java中含義:(面向對象編程)代理
1.模塊間的依賴經過抽象發生,實現類之間不發生直接的依賴關係,其依賴關係是經過接口或抽象類產生的;對象
2.接口或抽象類不依賴於實現類;
3.實現類依賴接口或抽象類。
含義:
1.客戶端不該該依賴它不須要的接口;
2.類間的依賴關係應該創建在最小的接口上。
衡量接口是否知足隔離原則:
1.一個接口只服務於一個子模塊或業務邏輯;
2.經過業務邏輯壓縮接口中的public方法,接口時常去回顧,儘可能讓接口達到「滿身筋骨肉」,而不是「肥嘟嘟」的一大堆方法。
含義:一個對象應該對其餘對象有最少的瞭解。
理解:對所調用的類不須要知道內部實現細節。
含義:一個軟件實體如類、模塊和函數應該對擴展開放,對修改關閉
理解:對功能的擴展時,要擴展原有接口或類,不要去修改已經正在實用的類。
含義:確保某一個類只有一個實例,並且自行實例化並向整個系統提供這個實例。
定義:定義一個用於建立對象的接口,讓子類決定實例化哪個類。工廠方法使一個類的實例化延遲到其子類。
理解:須要傳入被建立類的class,經過反射建立實例對象。
定義:爲建立一組相關或相互依賴的對象提供一個接口,並且無須指定它們的具體類。
理解:不須要傳入class,由工廠建立方法直接new 對象出來。
定義:定義一個操做中的算法的框架,而將一些步驟延遲到子類中。使得子類能夠不改變一個算法的結構便可重定義該算法的某些特定步驟。
理解:在抽象類中實現基本方法,在該基本方法中能夠調用在子類中才實現的方法。
定義:將一個複雜對象的構建與它的表示分離,使得一樣的構建過程能夠建立不一樣的表示。
理解:建立對象和對象行爲分離開來,建立這能夠生產各類類型的對象。
定義:爲其餘對象提供一種代理以控制對這個對象的訪問。
理解:用戶調用時使用代理類,真正執行時代理方法調用的是原始類的方法。