日期:2014-05-17  浏览次数:21063 次

GRASP模式

      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

  • B包含A
  • B聚合A
  • B拥有初始化A的数据并在创建类A的实例时将数据传递给类A
  • B记录A的实例;
  • B频繁使用