系统的分析与设计第5章.ppt

  1. 1、本文档共120页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
系统的分析与设计第5章

好处: 应用控制器模式的系统,对系统事件进行集中处理,所以: - 防止同类职责的分散。满足高内聚,低耦合原则。 - 有利于共通处理(前处理,后处理等)。 变化的高适应能力。能够把变化的修改范围控制在最小范围(控制器)之内。 用法举例:MVC模式 MVC模式Model-View-Controller头字母的缩写,中文翻译为“模型-视图-控制器” 模式(或者模型)。该模式把一个GUI应用划分为业务逻辑处理(M),画面表示(V),控制(C)三部分,并以此为基础进行设计和开发。 § 5.2.5 GRASP模式 MVC的构成要素包括Model,View,Controller三部分。 Model模型部分主要用来负责业务逻辑的处理,数据的保持。 Model是MVC模式的核心部分,它也是一个应用需要实现的最主要的部分:进行业务逻辑的处理。 View视图,负责数据的输出,画面的表示。 Controller控制器。负责接收从视图发送过来的数据,同时控制Model与View部分。 § 5.2.5 GRASP模式 MVC模式输入输出流程图参见图: 1.Controller接收用户输入 2.Controller调用Model进行业务逻辑处理(控制) 3.Controller通知/调用View进行画面描画处理(控制) 4.View根据需要适当参照Model的值 5.View进行画面描画处理 使用MVC模式,分离模型、视图与控制器,使得这三部分功能相对独立,一方面可以让系统的设计开发工作分工明确,方便开发人员的互相合作;另一方面,按照 MVC模式划分的系统的各部分功能保持独立,有利于构件复用。 § 5.2.5 GRASP模式 六、多态性模式 问题陈述: 根据类型(类)的不同而发生变化的行为的定义职责,应该分配给谁?多态性模式是GRASP扩展模式的一种,它通过多态操作把基于类型的可变行为的定义职责分配给行为发生的类。 问题比较抽象难懂,我们通过举例来解释一下。 比如物体的移动行为,不同的物体有不同的移动方法,比方说汽车与人的移动方法不一样。 在面向对象设计中,怎么样分配此类行为的定义职责呢?或者说,此类行为应该在哪定义怎么定义呢? § 5.2.5 GRASP模式 解决方案: 多态性模式提倡通过多态操作把基于类型的可变行为的定义职责分配给行为发生的类。 多态性是面向对象的重要概念之一。所谓多态性,简单地说,就是具有同一接口的不同对象对相同的消息具有不同的行为。或者说同一消息作用于不同的对象,而产生不同的结果。 传统的设计方法,当类型发生变化时,利用条件判断语句对类型进行判断,然后执行不同的行为。 多态性模式把各变化的“行为”定义职责分别分配给具有相同操作行为界面的通用接口的实现子类,利用多态性适应行为的可变性。 好处: - 避免重复代码 - 避免重复的分歧条件 - 易扩展。只要实现了统一的通用接口,便可实现行为的扩展 § 5.2.5 GRASP模式 用法举例: 物体的移动行为,应用多态性设计模式设计的类图如图所示: 这样的话,如果我们需要扩展“移动”行为,只需简单地创建一个实现IRunner接口的类。 其他应用多态性模式的例子还有如:GoF设计模式之命令模式和策略模式等。 § 5.2.5 GRASP模式 七、纯虚构模式 问题陈述: 非问题领域中的职责应该分配给谁?或者说,按照信息专家等模式分配职责时,存在某些不恰当的职责时,应该怎么做?所谓不恰当的职责,是指难以分配的职责:在保证高内聚,低耦合的条件下,某些职责难以分配给现存的任何问题领域里的类。纯虚构模式是GRASP扩展模式之一,它把非问题领域中的职责分配给人工定义的类。 解决方案: 纯虚构模式提倡把那些非问题领域的职责分配给人工生成的或者容易实现此类职责的概念类。 § 5.2.5 GRASP模式 Domain Class的概念 我们设计对象的时候应该尽量保持与现实世界里的对象一致。这种与现实世界里的对象保持一致的从业务分析中抽象出来的类叫做“Domain Class”。它相当于上述问题领域里的类。 比如一个简单的用例:用户注册。 用户就是一个“Domain Class”,它是现实世界里的业务对象。相当于这里的“问题领域里的类”。 用户注册需要操作数据库,【数据库操作】是系统功能实现的一个必需功能,它不是现实世界里存在的业务对象,它是一个非Domain Class。如果把【数据库操作】看作一个行为

文档评论(0)

liwenhua00 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档