此文參考了這篇博客,建議讀者閱讀原文。設計模式
面向對象(Object-Oriented,OO)是當下軟件開發的主流方法。在OO分析與設計中,咱們首先從問題領域中抽象出領域模型,在領域模型中以適當的粒度概括出相關的類;而後定義各個類之間的關聯關係,並給這些類分配相應的職責,同時定義這些類之間的協做方式。將相應的職責分配給具體的類是OO過程當中很是重要的一步。GRASP設計模式是職責分配過程當中的一套很是重要的設計模式。它給出了在給類分配職責的過程當中,設計者們所須要聽從的一些原則或者指導性的建議spa
GRASP不是平時說的GoF(Gang of Four)的23種設計模式。GRASP設計模式描述的是在OO設計中爲互相協做的類分配職責的原則或者建議,而GoF的設計模式則是在更高的層次上描述一個OO系統或者其局部系統的行爲以及結構上的抽象。GRASP與GoF最大的區別是它描述的是互相協做的多個類間職責分配的原則或者建議。.net
GRASP設計模式的全稱是General Responsibility Assignment Software Patterns,即通用職責分配軟件模式。它定義了9個基本的OO設計原則或基本的設計構件。這9個設計模式分別是:設計
GRASP是對象職責分配的基本原則,其核心思想是職責分配(Responsibility Assignment),用職責設計對象(Designing Objects with Responsibilities)orm