二、介面隔離原則
三、依賴倒轉原則
四、裡式替換原則
五、開閉原則
六、迪公尺特法則
七、合成復用原則
設計模式是對軟體設計中普通存在的各種問題,
所提出的解決方案。程式設計過程中會面臨耦合性,內聚性,
以及可維護性,可擴充套件性,重用性,靈活性等多方面的問題,
設計模式是為了解決上面的問題。
設計模式的七大原則:
1. 單一職責原則
2. 介面隔離原則
3. 依賴倒轉原則
4. 裡式替換原則
5. 開閉原則
6. 迪公尺特法則
7. 合成復用原則
對類來說,即乙個類應該只負責一項職責。
1. 降低類的複雜度,乙個類值負責一項職責
2. 提高類的可讀性,可維護性
3. 降低變更引起的風險
4. 我們應當遵守單一職責原則,只有邏輯足夠簡單,才可以
在**級別違反單一職責原則;只有類中的方法數量足夠少,
可以在方法級別保持單一職責原則
class
person
public
void
fly(string v)
}
class
person
}class
air}
對類來說,即乙個類應該盡量不依賴其他類。
1. 使用多個專門的介面取代統一的介面
inte***ce
a/**
b類只用a介面的方法一和方法二,但是b要實現不用的方法三
*/class
bimplements
apublic
void
fun2
(string v)
public
void
fun3
(string v)
}/**
c類只用a介面的方法一和方法三,但是c需要實現不用的方法二
*/class
cimplements
apublic
void
fun2
(string v)
public
void
fun3
(string v)
}
inte***ce
ainte***ce
binte***ce
c/**
d類只需要實現方法一和方法二
*/class
dimplementsa,b
public
void
fun2
(string v)
}/**
e類只需要實現方法一和方法三
*/class
eimplementsa,c
public
void
fun3
(string v)
}
面對介面程式設計,相對於細節的多變性,抽象更穩定
1. 底層模板盡量使用抽象類或介面
2. 變數的宣告型別盡量是抽象類或介面。有利於擴充套件和優化
calss a
}/**
b類不利於擴充套件,
**/class
b}
inte***ce
aclass
bimplementsa}
class
cimplementsa}
class
c}
所有引用基類的地方必須能使用子類的物件,
子類盡量不要重寫基類的方法。
1. 繼承實際上讓2個類耦合性增加了,在適當的情況下,
可以通過聚合,組合,依賴來解決問題。
calss a
}/**
b類重寫a類方法,容易破壞a類方法的含義
**/class
bextends
a}
calss a
}class
b}
對擴充套件開放,對修改關閉。
1. 擴充套件功能盡量不修改原**
calss a
/**現在a類新增乙個型別,需要b類實現新的方法
**/class
belse
(a.type ==2)
}public
void
fun1()
public
void
fun2()
}
abstract calss a
class
bextends
apublic
void
fun()}
/** 擴充套件只需要實現類,無需修改原了**
**/class
cextends
apublic
void
fun()}
class
d}
最少知道原則,即乙個類對自己依賴的類知道的越少越好。
盡量與直接朋友通訊,類的直接朋友出現在成員變數,
方法引數,方法返回值中。不要以區域性變數形式出現在類中。
2.1 在類的劃分上,盡量建立松耦合的類。
2.2 在類的結構設計上,每乙個類都應當盡量降
低對成員變數和成員函式的訪問許可權。
2.3 在類的設計上,只要有可能,乙個型別設計成不變類。
2.4 在類的引用上,乙個類應當降低對其他類的引用。
classa}
class
b}
classa}
class
b}
盡量使用合成/聚合的方法,而不是使用繼承。
2.1 繼承復用,實現簡單,易於擴充套件,破壞系統的封裝性;、
2.2 組合/聚合,耦合度較低,選擇性的呼叫成員物件的方法。
classa}
class
b extens a
}
classa}
class
bpublic
void
fun(
)}
設計模式 七大設計原則(一)
簡單介紹一下七大設計原則 開閉原則 是所有物件導向設計的核心,對擴充套件開放,對修改關閉 依賴倒置原則 針對介面程式設計,依賴於抽象而不依賴於具體 單一職責原則 乙個介面只負責一件事情,只能有乙個原因導致類變化 介面隔離原則 使用多個專門的介面,而不是使用乙個總介面 迪公尺特法則 最少知道原則 只和...
設計模式 七大設計原則
定義 應該有且只有乙個原因,引起類的變更 組合是一種強耦合關係,你我都有共同的生命週期,這種強耦合關係,不如直接使用介面實現 建議 介面一定要做到單一原則,類的設計盡量做到只有乙個原因引起變更 定義 所有使用父類的地方,必須能夠透明的使用其子類,反之不行 子類不能完整地實現父類的方法,或者父類的某些...
設計模式 七大設計原則(二)
簡單介紹一下七大設計原則 開閉原則 是所有物件導向設計的核心,對擴充套件開放,對修改關閉 依賴倒置原則 針對介面程式設計,依賴於抽象而不依賴於具體 單一職責原則 乙個介面只負責一件事情,只能有乙個原因導致類變化 介面隔離原則 使用多個專門的介面,而不是使用乙個總介面 迪公尺特法則 最少知道原則 只和...