設計模式的六大原則

(以下內容極其後面的關於設計模式的內容均來自《java高手真經(系統架構)》)

設計模式六大原則

原則 含義 具體方法
開閉原則 對外擴展開放 ,對修改關閉 多使用抽象類和接口
里氏替換原則 基類可以被子類替換 使用抽象類繼承,不使用具體類繼承
合成複用原則 更依賴於抽象,不依賴於具體 針對接口編程,不針對實現編程
接口隔離原則 使用多個隔離的接口,比使用單個接口好 簡歷最小接口
迪米特法則 一個實體軟件應該儘可能少的與其他實體發生相互作用 通過中間類建立聯繫
依賴倒轉原則 儘量使用合成/聚合,而不是使用繼承 儘量使用合成/聚合,而不是使用繼承


開-閉原則(OCP

對擴展快放:有新的需求或者變化時,可以對現有的代碼進行擴展,以適應新的情況。

對修改關閉:類一旦設計完成,就可以獨立完成自己的工作,而不要對類進行任何修改。

其他的原則基本都是對這一個原則服務的。

實現方式:抽象,多態,繼承,接口

(離散的總結)

抽象是穩定的。

類依賴於抽象,抽象是不變化的,所以對類的修改是關閉的。

針對於抽象編程,而不是針對於具體編程。

只是針對於變化的程序進行抽象,在操作系統不適用於抽象

內容來源:http://video.tudou.com/v/XMTc5ODcyMzAwNA==.html


里氏替換原則

子類必須能夠替換成他們的基類。

解釋得詳細一些就是:在一個軟件系統中,子類應該可以替換任何基類能夠出現的地方,並且經過替換以後,代碼還能正常工作,子類也能夠在基類的基礎上增加新的行爲。

在進行設計的時候,我們應該儘量的從抽象類繼承,而不是從具體類繼承,如果從繼承等級樹來看,所有葉子節點應該當是抽象類或者接口。當然,具體情況具體分析。


依賴倒轉原則

依賴也就是耦合,分爲三種:

零耦合關係:兩個類沒有依賴關係。

具體耦合關係:兩個具體類中間有依賴關係,如果一個具體類直接引用另一個具體類,就是這種關係。

抽象耦合關係:這種關係發生在一個具體類和惡一個抽象類之間,這樣就使必須發生關係的類之間保持最大的靈活性。


倒轉:程序中所有的依賴關係都是終止於抽象類或接口

依賴倒轉原則要求客戶端依賴於抽象耦合。

開閉原則的主要機制就是依賴倒轉原則,里氏替換原則是依賴倒轉原則的基礎,依賴倒轉原則是OOD夫人核心基礎。


接口隔離原則:

一個類對另外一個類的依賴性應當是建立在最小的接口上的。


迪米特法則

初衷:降低類之間的耦合,由於每個類儘量減少對其他類的依賴,因此,很容易使得系統的功能模塊獨立,相互之間不存在(或者很少存在)依賴關係。

缺點:系統中存在大量的中介類,這些類的存在完全是爲了傳遞類之間的相互調用的關係---在一定程度上增加了系統的複雜度。


合成複用原則

合成聚合複用原則就是在一個新的對象裏面使用一些已有的對象,使之成爲新的對象的一部分,新的對象通過向這些對象的委派達到複用已有功能的目的。

更簡短的描述就是:要儘量使用合成聚合,儘量不要使用繼承。

聚合表示整體和部分的關係,表示"擁有"。合成表示更強的"擁有"。

在面向對象的設計中,有兩種基本的辦法實現複用:

第一種是通過合成/聚合,即合成複用原則,含義是,儘量使用合成/複用原則,而不是使用繼承。

第二種是繼承。

只有當以下的條件適合全部滿足時才應當使用繼承關係:

子類是超類的一個一個特殊的種類,而不是超類的一個角色。

永遠不會出現將一個子類轉換成另一個類的子類的情況,如果不能肯定將來是否會變成另外一個類的子類的話,就不要使用繼承。

子類具有擴展超類的責任,而不是具有置換掉或者註銷掉超類的責任。如果一個類需要置換掉超類的行爲,那麼這個類就不應該是這個超累的子類。

只有在分類學角度有意義時,纔可以使用繼承,而不要從工具類繼承。







發佈了76 篇原創文章 · 獲贊 5 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章