第1页共9页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第1页共9页GRASP(GeneralResponsibilityAssignmentSoftwarePatterns)创建者(Creator)问题:谁创建了A
解决方案:如果以下条件之一为真时(越多越好),将创建类A实例的职责分配给B:B“包含”或组成聚合了AB记录AB紧密地使用AB具有A的初始化数据举例:比如在富客户端应用开发中,主程序创建一个主窗口对象,然后有主窗口对象来负责创建它内部的各种菜单、按钮等对象(而不是由主程序来创建这些菜单或按钮对象之后,再把它设置到主窗口中去)第2页共9页第1页共9页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第2页共9页信息专家(InformationExpert)问题:给对象分配职责的基本原则是什么
解决方案:把职责分配给具有完成该职责所需信息的那个类
(描述一种直觉
)举例:publicclassClasses{privateintid;privateSetstudents;//描述一种直觉publicvoidaddStudent(Studentstudent){if(students==null){students=newHashSet();}students
add(student);}//将职责放在拥有这个职责所需信息的那个类中publicbooleanhasStudent(Studentstudent){for(Iteratoriterator=students
iterator();iterator
hasNext();){Students=(Student)iterator
next();if(s
equals(student)){returntrue;}}returnfalse;}publicclassStud