预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共47页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第17章GRASP:基于职责设计对象GRASP:DesigningObjectswithResponsibilities图17-1制品关系(强调了对OO设计的影响职责和方法职责可分成两类:职责和交互图设计模式(Patterns)GoF关于设计模式的著作GRASP:分配职责通用原则的模式创建者(Creator)问题:由谁创建Square对象在动态和静态模型中应用创建者模式信息专家(InformationExpert)问题:如果给定键值,谁知道Square对象的相关信息低耦合(LowCoupling)为什么期望低耦合创建者模式与低耦合信息专家模式与低耦合控制器(Controller)问题:谁首先来处理playGame系统系统根据模型与视图分离原则,UI对象不应当包括业务逻辑,应该把请求委派给领域层的对象。如果只有少数几个系统操作,可以选择代表全部“系统”或“根对象”。高内聚(HighCohesion)什么是高内聚度(HighCohesion)GRASP在NextGenPOS设计中的示例创建者模式示例:谁该负责创建SalesLineItem?Sale,因为它包含了SalesLineItem信息专家示例:谁应当负责了解销售的总额Sale的新职责SalesLineItem的新职责ProductDescription的新职责低耦合模式示例:谁负责创建Payment图17-19Sale创建Payment控制器模式示例:enterItem,endSale等系统操作的控制器是谁?哪个对象应该是enterItem的控制器可能的选择:1.代表整个“系统”、“根对象”、装置或子系统:Register,POSSystem2.代表用例场景中所有系统事件的接收者或处理者:ProcessSaleHandler,ProcessSaleSession.不同方案的系统操作分配关于控制器模式的讨论控制器在WebUI和服务器的应用UI层与控制器交互的编程示例浮肿的控制器避免浮肿的控制器的一些解决方案界面层不处理系统事件-期望的界面层不处理系统事件-不期望的高内聚模式示例:makePayment职责的分配创建Payment类的对象的职责委派给Sale类去完成。