日期:2014-05-17 浏览次数:21112 次
GRASP,全称为General Responsibility Assignment Software Pattern,即通用职责分配软件模式,它由《UML和模式应用》(Applying UML and Patterns)一书作者Craig Larman提出。与其将它们称之为设计模式,不如称之为设计原则,因为它是站在面向对象设计的角度,告诉我们怎样设计问题空间中的类与分配它们的行为职责,以及明确类之间的相互关系等,而不像GoF模式一样是针对特定问题而提出的解决方案。因此GRASP站在一个更高的角度来看待面向对象软件的设计,它是GoF设计模式的基础。
GRASP是对象职责分配的基本原则,其核心思想是职责分配(Responsibility Assignment),用职责设计对象(Designing Objects with Responsibilities)。它包含如下9个基本模式:
1. 信息专家模式 (Information Expert Pattern)
(1) 问题:给对象分配职责的通用原则是什么?
(2) 解决方案:将职责分配给拥有履行一个职责所必需信息的类,即信息专家。
(3) 分析:信息专家模式是面向对象设计的最基本原则。通俗点来讲,就是一个类只干该干的事情,不该干的事情不干。在系统设计时,需要将职责分配给具有实现这个职责所需要信息的类。信息专家模式对应于面向对象设计原则中的单一职责原则。
2. 创造者模式 (Creator Pattern)
(1) 问题:谁应该负责产生类的实例?
(2) 解决方案:如果符合下面的一个或者多个条件,则可将创建类A实例的职责分配给类B: