架构师培训讲义6-类结构设计

架构师培训讲义6-类结构设计

ID:5727

大小:1.19 MB

页数:91页

时间:2017-04-09

架构师培训讲义6-类结构设计_第1页
架构师培训讲义6-类结构设计_第2页
架构师培训讲义6-类结构设计_第3页
架构师培训讲义6-类结构设计_第4页
架构师培训讲义6-类结构设计_第5页
资源描述:

《架构师培训讲义6-类结构设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、详细设计阶段的类结构设计详细设计阶段的一个十分重要的问题,就是进行类设计。类设计直接对应于实现设计,它的设计质量直接影响着软件的质量,所以这个阶段是十分重要的。这就给我们提出了一个问题,类是如何确定的,如何合理的规划类,这就要给我们提出一些原则,或者是一些模式。设计模式是有关中小尺度的对象和框架的设计。应用在实现架构模式定义的大尺度的连接解决方案中。也适合于任何局部的详细设计。设计模式也称之为微观架构模式。第一节类结构设计中的通用职责分配软件模式GRASP模式(GeneralResponsibilityAssignmentSo

2、ftwarePatterns通用职责分配软件模式)能够帮助我们理解基本的对象设计技术,并且用一种系统的、可推理的、可说明的方式来应用设计理论。一、根据职责设计对象职责:职责与一个对象的义务相关联,职责主要分为两种类型:1)了解型(knowing)了解私有的封装数据;了解相关联的相关对象;了解能够派生或者计算的事物。2)行为型(doing)自身执行一些行为,如建造一个对象或者进行一个计算;在其它对象中进行初始化操作;在其它对象中控制或者协调各项活动。职责是对象设计过程中,被分配给对象的类的。我们常常能从领域模型推理出了解型相关的

3、职责,这是因为领域模型实际上展示了对象的属性和相互关联。二、职责和交互图在UML中,职责分配到何处(通过操作来实现)这样的问题,贯穿了交互图生成的整个过程。例如:所以,当交互图创建的时候,实际上已经为对象分配了职责,这体现到交互图就是发送消息到不同的对象。三、在职责分配中的通用原则总结一下:l巧妙的职责分配在对象设计中非常重要。l决定职责如何分配的行为常常在创建交互图的之后发生,当然也会贯穿于编程过程。l模式是已经命名的问题/解决方案组合,它把与职责分配有关的好的建议和原则汇编成文。四、信息专家模式解决方案:将职责分配给拥有履

4、行一个职责所必需信息的类,也就是信息专家。问题:在开始分配职责的时候,首先要清晰的陈述职责。假定某个类需要知道一次销售的总额。根据专家模式,我们应该寻找一个对象类,它具有计算总额所需要的信息。关键:使用概念模型(现实世界领域的概念类)还是设计模型(软件类)来分析所具有所需信息的类呢?答:1.如果设计模型中存在相关的类,先在设计模型中查看。2.如果设计模相中不存在相关的类,则查看概念模型,试着应用或者扩展概念模型,得出相应的概念类。我们下面来讨论一下这个例子。假定有如下概念模型。到底谁是信息专家呢?如果我们需要确定销售总额。可以

5、看出来,一个Sale类的实例,将包括“销售线项目”和“产品规格说明”的全部信息。也就是说,Sale类是一个关于销售总额的合适的信息专家。而SalesLineItem可以确定子销售额,这就是确定子销售额的信息专家。进一步,ProductSpecification能确定价格等,它就是“产品规格说明”的信息专家。上面已经提到,在创建交互图语境的时候,常常出现职责分配的问题。设想我们正在绘设计模型图,并且在为对象分配职责,从软件的角度,我们关注一下:为了得到总额信息,需要向Sale发出请求总额请求,于是Sale得到了getTotal方

6、法。而销售需要取得数量信息,就要向“销售线项目”发出请求,这就在SalesLineItem得到了getSubtotal方法。而销售线项目需要向“产品规格说明”取得价格信息,这就在ProductSpecification类得到了getPrice方法。这样的思考,我们就在概念模型的基础上,得到了设计模型。注意:职责的实现需要信息,而信息往往分布在不同的对象中,这就意味着需要许多“部分”的信息专家来协作完成一个任务。信息专家模式于现实世界具有相似性,它往往导致这样的设计:软件对象完成它所代表的现实世界对象的机械操作。但是,某些情况下

7、专家模式所描述的解决方案并不合适,这主要会造成耦合性和内聚性的一些问题。后面我们会加以讨论。五、创建者模式解决方案:如果符合下面一个或者多个条件,则可以把创建类A的职责分配给类B。1,类B聚和类A的对象。2,类B包含类A的对象。3,类B记录类A的对象的实例。4,类B密切使用类A的对象。5,类B初始化数据并在创建类A的实例的时候传递给类A(因此,类B是创建类A实例的一个专家)。如果符合多个条件,类B聚合或者包含类A的条件优先。问题:谁应该负责产生类的实例?创建对象是面向对象系统最普遍的活动之一,因此,拥有一个分配创建对象职责的通

8、用原则是非常有用的。如果职责分配合理,设计就能降低耦合度,提高设计的清晰度、封装性和重用性。讨论:创建者模式指导怎样分配和创建对象(一个非常重要的任务)相关的职责。通过下面的交互图,我们立刻就能发现Sale具备Payment创建者的职责。创建者模式的一个基本目的,就是找到一个

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。