通用職責分配軟體模式(GRASP)介紹和個人理解

2021-07-24 11:32:22 字數 1217 閱讀 5698

general responsibility assignment software patterns 簡稱grasp 翻譯是通用職責分配軟體模式,不同於gof的23中設計模式那麼具體到場景和解決方案。它是通用概括講解如何設計類和物件之間的關係。和如何給類和物件分配對應的職責。其實物件導向最難、最核心和最有爭議的的點就是如何設計類和物件的職責,類和物件之間的怎麼聯絡。

其中一共是9個設計原則,控制器,創造者,資訊專家,高內聚、低耦合、多型,受保護變化,中介和純虛構。

1.控制器模式:

2.創造者模式:

乙個類建立了另乙個類,這樣這兩個類就產生了依賴關係。一般來說就是以下幾種情況需要有建立者模式,

(1)b物件的例項化依賴a物件的資訊。

(2)b物件是a物件的容器,比如spring裡面bean和上下文的關係

(3)b物件和a物件關係非常緊密

(4)b 是a的聚合和復合

3.資訊專家模式:

用來確定在**委派責任。這些職責包括方法,計算字段,等等。這個就是分配職責的時候,就是應該分給完成這個任務或者事件的擁有的元素最多,這個職責就應該分配給它。

4.高內聚:

高內聚是描述類的責任的。其實就是責任細化,彼此之間完成這個責任模組沒有依賴,非常容易復用,就是職責的單

一、具體、細化的過程。做到高內聚非常麻煩,越是高內聚的系統和類就說明,類的內容很小,這個系統類就會很多。

5.低耦合:

低耦合是描述物件之間的關係的。低耦合就是,兩個有關係的類,類裡面不管怎麼變動,對於那個類的沒有影響就是低耦合。低耦合最基本的兩個事,(1)乙個是不需要有關係的兩個類就不要有聯絡。(2)兩個內部類不要有聯絡。

6多型:

多型,就是一類事物要統一繼承乙個抽象類。一族的行為要繼承乙個介面,對外一定只提供抽象類和介面,不提供具體的實現方法或者實現類。方便擴充套件出新的實現類

7 純虛構:

純虛構,就是兩組不同實現不同介面的方法需要聯絡,互動。不可能每個實現方法 直接進行聯絡,那就做乙個抽象方法進行互動,都用抽象入參,那就都可以包括使用了。

8中介:

中介就是,兩個類不想直接互動,就通過乙個中介來進行互動。這個是乙個降低耦合的乙個方法。

9受保護變化

受保護的變化模式保護元素的其他元素(物件,系統,子系統)的變化,通過包裝的不穩定的焦點與乙個介面和使用多型性來建立這個介面的各種實現。就是將變化的部分封裝起來。

上面就是比較簡單對於設計一點概述吧。下回,我會繼續寫設計原則我的一些看法。

js 職責鏈模式簡要介紹

定義 使多個物件都有機會處理請求,避免傳送者與接受者之間的耦合關係,將物件連成一條鏈,沿著這條鏈傳遞請求,直到有乙個物件處理它。如何把物件串聯起來?解決方法通常是將另乙個物件作為新建立物件的引數,稱為繼承者。如何把請求傳遞下去?通常在其原型上定義同名請求方法,在此方法裡呼叫繼承者。極簡示例如下 fu...

(七)軟體設計模式 職責鏈模式

職責鏈是為請求建立了乙個接收者物件的鏈。每個接收者都包含對另乙個接收者的引用,如果乙個物件不能處理該請求,那麼它會把相同的請求傳給下乙個接收者,依此類推。例如 學生想請假,院長只能批 2天假,校長可以批 7天假。學生聯絡院長,院長聯絡校長,學生不用知道校長的 也能請假,降低了學生與校長的耦合度 請求...

軟體設計模式介紹

單例模式是一種常用的軟體設計模式,其定義是單例物件的類只能允許乙個例項存在。優點 缺點 示例 public class singleton 以自己例項為返回值的靜態的公有方法,靜態工廠方法 public static singleton1 getsingleton 工廠顧名思義就是建立產品,根據產品...