文章目錄
前言
一、低耦合原則(Low Coupling Principle)
二、使用步驟
示例
GRASP:General Responsibility Assignment Software Patterns 通用職責配置設定軟體模式。
首先我們先來區分下GRASP與GOF模式的差別,它們主要在什麼時候用,用來做什麼。在軟體開發過程中,我們常說面向對象開發,面向對象思想應該貫穿整個軟體開發生命周期。我們在将現實世界中的業務對象及業務功能抽象成軟體系統中的系統對象過程中應該遵循使用GRASP模式。而在具體技術實作上應該遵循使用GOF設計模式,來實作系統功能。即GRASP主要使用在分析設計階段,與具體技術無關;而GOF模式主要使用在開發階段,與具體技術相關,它是對GRASP設計成果進行實作時而使用,是一種開發階段的設計模式。
GRASP軟體設計模式包括9個模式:建立者、資訊專家、低耦合、控制器、高内聚、多态性、純虛構、間接性、防止變異。
提示:以下是本篇文章正文内容,下面案例可供參考
(1)問題
怎樣支援低的依賴性,減少變更帶來的影響,提高重用性?
(2)方案
配置設定一個職責,使得保持低耦合度。
(3)分析
耦合是評價一個系統中各個元素之間連接配接或依賴強弱關系的尺度,具有低耦合的元素不過多依賴其他元素。此處的元素可以是類,也可以是子產品、子系統或者系統。具有高耦合的類過多地依賴其他類,這種設計将會導緻:一個類的修改導緻其他類産生較大影響;系統難以維護和了解;系統重用性差,在重用一個高耦合的類時不得不重用它所依賴的其他類。是以需要對高耦合的系統進行重構。
類A和類B之間的耦合關系展現如下:A具有一個B類型的屬性;A調用B的方法;A的方法包含對B的引用,如方法參數類型為B或傳回類型為B;A是B的直接或者間接子類;B是一個接口,A實作了該接口。低耦合模式鼓勵在進行職責配置設定時不增加耦合性,進而避免高耦合可能産生的不良後果。在進行類設計時,需要保持類的獨立性,減少類變更所帶來的影響,它通常與資訊專家原則和高内聚原則一起出現。為了達到低耦合,我們可以通過如下方式對設計進行改進:
1、在類的劃分上,應當盡量建立松耦合的類,類之間的耦合度越低,就越有利于複用,一個處在松耦合中的類一旦被修改,不會對關聯的類造成太大波及;
2、在類的設計上,每一個類都應當盡量降低其成員變量和成員函數的通路權限;
3、在類的設計上,隻要有可能,一個類型應當設計成不變類(C#語言中為sealed或static);
4、在對其他類的引用上,一個對象對其他對象的引用應當降到最低。
public sealed class Singleton {
private static Singleton _instance = null;
public static Singleton GetInstance() {
if(_instance == null) {
_instance = new Singleton();
Console.WriteLine("Singleton.GetInstance()!");
}
return _instance;
}
}
以上代碼可在我的 C#設計模式 系列博文中建立型模式下的單例模式中找到。
Singleton類是一個單例類,它幾乎沒有任何業務耦合,使用sealed密封此類以防止被繼承,_instance的通路權限為private,因為要盡可能的降低通路權限,它的引用由公開的GetInstance方法傳回。