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

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

ID:44502013

大小:2.18 MB

页数:96页

时间:2019-10-22

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

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

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

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

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

4、的陈述职责。假定某个类需耍知道一次销售的总额。根据专家模式,我们应该寻找一个対象类,它具有计算总额所需要的信息。关键:使用概念模型(现实世界领域的概念类)还是设计模型(软件类)来分析所具有所需信息的类呢?答:1.如果设计模型中存在相关的类,先在设计模型中查看。2.如果设计模相屮不存在相关的类,则查看概念模型,试着应川或者扩展概念模型,得出相应的概念类。我们下面来讨论一下这个例了。假定有如下概念模型。至I」底谁是信息专家呢?如果我们需要确定销售总额。可以看出来,一个Sale类的实例,将包括“销售线项目”和“产品规格说明”的全部信息。也就是说,Sale类是一个

5、关于销售总额的合适的信息专家。而SalesLineltem可以确定子销售额,这就是确定子销售额的信息专家。进一步,Productspecification能确定价格等,它就是“产品规格说明”的信息专家。上面已经提到,在创建交互图语境的时候,常常出现职责分配的问题。设想我们止在绘设计模型图,并且在为对象分配职责,从软件的角度,我们关注一下:为了得到总额信息,需要向Sale发出请求总额请求,于是Sale得到了getTotal方法。而销售需耍取得数量信息,就要向“销售线项目”发出请求,这就在SalesLineltem得到了getSubtotal方法。而销售线项冃

6、盂要向“产品规格说明”取得价格信息,这就在ProductSpccification类得到了getPrice方法。这样的思考,我们就在概念模型的基础上,得到了设计模型。t:=getTotal0Sale1:st:=getSubTotal0SalesLineltem1.1:p:=getPrice()下面为设计类ProduetSpecifigtionSaleSalesLineltgmProduetSpmcificationdategetTotal()quantitygetSubTatol()descriptionpriceitemIDgetPeice()注意:职责

7、的实现需要信息,而信息往往分布在不同的対象中,这就意味着需要许多“部分”的信息专家来协作完成一个任务。信息专家模式于现实世界具冇相似性,它往往导致这样的设计:软件对象完成它所代表的现实世界对彖的机械操作。但是,某些情况下专家模式所描述的解决方案并不合适,这主要会造成耦合性和内聚性的一些问题。后面我们会加以讨论。五、创建者模式解决方案:如果符合下面一个或者多个条件,则可以把创建类A的职责分配给类Bo1,类B聚和类A的对象。2,类B包含类A的对象。3,类B记录类A的对象的实例。4,类B密切使用类A的对象。5,类B初始化数据并在创建类A的实例的时候传递给类A(因

8、此,类B是创建类A实例的一个专家)。如果符合多个条件,类B聚合或者

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

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

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