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

GRASP(基于职责设计对象)

GRASP(General Responsibility Assignment Software Patterns)

创建者(Creator

问题:谁创建了A

解决方案:如果以下条件之一为真时(越多越好),将创建类A实例的职责分配给B

l? B“包含”或组成聚合了A

l? B记录A

l? B紧密地使用A

l? B具有A的初始化数据

举例:

比如在富客户端应用开发中,主程序创建一个主窗口对象,然后有主窗口对象来负责创建它内部的各种菜单、按钮等对象(而不是由主程序来创建这些菜单或按钮对象之后,再把它设置到主窗口中去)

?

?

信息专家(Information Expert)

问题:给对象分配职责的基本原则是什么?

解决方案:把职责分配给具有完成该职责所需信息的那个类。(描述一种直觉!)

举例:

public class Classes {

?????? private int id;

?????? private Set students;

??????

?????? //描述一种直觉

??????