天天看點

java-了解設計模式原則

1.單一職責原則

1.降低類的複雜度,一個類隻做一件事(這樣類就用的多)

2.如果邏輯簡單,方法不多,類可以不用遵守單一,但是方法上一點要遵守單一職責

2.接口隔離原則

A類通過接口去依賴B類,大的接口拆分小的接口,去依賴小的接口

1.多個接口,多個方法,普通類實作多個接口,以及重寫方法

2.普通類裡,不同名的方法,參數裡面傳不同的接口名

3.A a = new A()

a.方法(new B())調用直接傳接口的實作類

3.依賴倒轉原則(找一個中間人)

1.高層子產品不能依賴底層子產品,都應該要依賴抽象

2.中心思想是面向接口程式設計(使用接口抽象是規範)

案例:

一個QQ類接收電子郵箱,接收方法裡面傳電子郵箱對象

上面比較容易想到如果我們擷取的對象是徵信,短信等等,則新增類,同時Perons也要增加相應的接收方法

優化思路:

引入一個抽象的接口 Receiver,表示接收者,這樣 Person類與接口工 Receiver發生依賴因為Emai1, Weixin等等屬于接收的範圍,他們各自實作 Treceiver接口就ok,這樣我們就符号依賴倒轉原則

4.裡氏替換原則

聚合,組合,依賴來解決繼承問題

5.開閉原則,前面的都是為了這個

類,子產品應該對提供方擴充開發,對修改關閉(使用方),用抽象構造架構,實作擴充細節

增加代碼,不是修改

6.迪米特法則

最少知道原則,核心是降低類之間的耦合.

直接的朋友,隻要二個對象之間是朋友關系,例如依賴,關聯,組合,聚合.

方法傳回值,參數,成員變量中的類是直接朋友.

方法裡的局部變量(對象)不是朋友,違法了迪米特法則

了解:不要把自己的對象寫在别人的方法裡面,應該把自己對象寫在自己類中的方法封裝

别人的方法通過參數調用此方法

7.合成複用

原則盡量使用合成/聚合,不要用繼承

1.聚合是成員變量,整體與部分可以分開

2.關聯是成員變量一對一,一對多.類與類之間的聯系

3.合成是類中的成員對象,整體和部分不可分離,同生共死

4.組合和合成相同,唯一的差別是項目中進行級聯删除,删除A,B也一起删除,那麼AB就是組合

三種類型

1.建立型模式:解決建立對象

2.結構性模式:解決類之間的問題

3.行為性模式:解決方法的問題