没有合适的资源?快使用搜索试试~ 我知道了~
GRASP模式,这个模式出自《UML和模式应用》,GRASP是General Responsibility Assignment Software Pattern(通用责任分配软件模式)的缩写
资源推荐
资源详情
资源评论
1. 概述:
模式,这个模式出自《 和模式应用》, 是 通用责
任分配软件模式的缩写,在这本书里面在分析系统阶段主要是建立概念模型,概念模型是从真实世界转换到计算机世界的过渡模型 ,
根据用户的需求,如果是在 里面抽取出 里面的名词在 里面抽取出 里面的名词根据一定的原则来建立
相应的类,这些类只是记录一些属性信息和关联信息。到了设计阶段,有了概念模型之后,然后根据基于职责设计类,即 (职
责驱动开发), 是思考 软件设计的一般性隐喻,把软件对象想象成具有某种职责的人,他要与其他人协作以完成工作 。
使我们把 设计看作是有职责对象进行协作的共同体,基于这种思想作者提出了 分配职责的几个原则。 模式
可以用来设计类,这个模式包括 ! 个基本原则:创建者、信息专家、低耦合、控制器、高内聚、多态性、纯虚构、间接性、防止变
异。个人觉得最比较具体的是专家模式,就是根据自身数据资源也就是属性来分配给该类相应的职责(方法)。还有一个 " 设计
模式,个人觉得 比 " 层次要高些,先采用 模式指导怎么分配类的职责,如何分配,从而来设计各个类,解决类之
间如何交互, 如何设计合理的问题,与具体的问题无关,而 " 是解决具体的某个问题的,比如 有个创建者模式," 也
有, 模式指导该由谁来创建,即职责分配给谁,怎么分配,而 " 指导解决具体问题中的怎样创建问题,使用工厂模式,
#$% 模式等等。在国内讨论 模式比较少," 比较多,看了这方面的文章后觉得对面向对象方面的思考更深了一步。另外
" 的三层视角理论:概念视角,规约视角,实现视角我也觉得很不错,有很强的概括性。这些都教我如何和怎样采用面
向对象来思考问题,虽然在具体的项目中无法建立很多的 图,但是可以形成相应的概念,在大脑里面使用这些概念对整个系统
走一遍分析,设计的过程,从来设计出真正的面向对象软件,而不是仅仅使用了面向对象语言的软件。
2. 各个模式分析-版本 1
转自:hp://charles.javaeye.com/blog/51151
&专家模式'(
解决方案:将职责分配给具有履行职责所需要的信息的类
通俗点就是:该干嘛干嘛去,别管别人的闲事或者我的职责就是搞这个,别的事不管。
举个简单的例子,如果有一个类是专门处理字符串相关的类,那么这个类只能有字符串处理相关的方法,而不要将日期处
理的方法加进来。也就是提高软件高内聚一种原则。
)创建者
解决方案:将创建一个类 的实例的职责指派给类 # 的实例,如果下列条件满足的话:
# 聚合了 对象
# 包含了 对象
*# 纪录了 对象的实例
%# 要经常使用 对象
当 的实例被创建时,# 具有要传递给 的初始化数据也就是说 # 是创建 的实例这项任务的信息专家
# 是 对象的创建者
如果以上条件中不止一条成立的话,那么最好让 # 聚集或包含
通俗点就是:我要用你所以我来创建你,请不要让别人创建你
这个模式是支持低耦合度原则的一个体现
+高聚合度或高内聚,--
解决方案:分配一个职责的时候要保持类的高聚合度
聚合度或内聚度*-是一个类中的各个职责之间相关程度和集中程度的度量。一个具有高度相关职责的类并且这个
类所能完成的工作量不是特别巨大,那么他就是具有高聚合度。
.低耦合度或低耦合$
解决方案:在分配一个职责时要使保持低耦合度。
耦合度*$是一个类与其它类关联、知道其他类的信息或者依赖其他类的强弱程度的度量。一个具有低弱耦合度的类
不依赖于太多的其他类。
/控制者
解决方案:将处理系统事件消息的职责分派给代表下列事物的类:
代表整个“系统”的类(虚包控制者)
代表整个企业或组织的类(虚包控制者)
*代表真实世界中参与职责(角色控制者)的主动对象类(例,一个人的角色)
资源评论
donw2009
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功