1. 程式人生 > >UML中GRASP面向物件設計原則

UML中GRASP面向物件設計原則

GRASP原則(General Responsibility Assignment Software Patterns)基於職責分配的的面向物件設計原則,它是面向物件設計的基本原則。

主要包括9個原則,總結一下:

1.建立者誰負責建立類?在Java和C++中對應呼叫new或者物件建構函式。這個還比較容易理解,誰負責建立,則可以考慮將被建立者組合為建立者的一個屬性(屬性可見),或者建立者的某個函式中建立被建立者(區域性可見)。

2.專家模式。誰應該對某個行為或者認知負責?誰擁有實現該行為所需要的必須資訊,就講該職責讓誰負責。對應到程式碼中通常表現為某個行為方法需要定義在哪個類中。對於需要在類與類之間傳送訊息的方法,需要在傳送方保留被髮送方的指標或者引用。(物件可見性

3.控制器UI層和領域模型之間的模式應用。主要是為了保持UI層和業務邏輯層不相互汙染。通常對應的建立一個代表系統的類或者一個虛構類用於UI層和領域層的訊息互動。

4.高內聚儘量保持類能夠只有單一的事情,只做自己份內的事,不包含過多的職責。表現為物件中的方法只是自己必須完成的工作,對於一些其他不太相關的工作可以委派給其它類,轉而建立之間的關聯即可。

5.低耦合。一個類儘可能少的和多個類發生關係,儘量少的依賴於其他類。表現在程式碼上為一個類較少的存在其他類的指標和引用。

6.多型。即多個類有一些共同的形態。在程式碼上表現為替換switch case之類的操作,建立多型關係,通常以抽象超類和介面的形式呈現,子類進行繼承。

7.純虛構。有時候在類與類之間通過構建一個實際並不存在的類用於資訊的傳遞和交換以保持高內聚和低耦合的特點。

8.間接性。保持類和類之間的間接關係,減少直接關係,如介面卡等。純虛構就是因為間接性而產生的。

9.防止變異。不和陌生人說話。只向自己熟悉的物件傳送訊息,熟悉的物件包括this物件,方法的引數,this屬性,this屬性中的集合元素,在類方法中建立的物件。