软件工程第三部分 面向对象分析、设计与测试(10-12).ppt

软件工程第三部分 面向对象分析、设计与测试(10-12).ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
异常处理 由于产品价格经常变动,缓存价格信息会导致数据失效。 解决的方案是增加远程服务操作,来查询当日更新的数据。 LocalProducts对象定期地查询并更新它的缓存。如果这样做,将LocalProducts对象设计为拥有控制线程的主动对象。 线程休眠一段时间,唤醒后读取数据,再次休眠,如此反复。 异常处理模式 采用对象缓存文件的方案可以提高系统效率,但是本地缓存没有产品信息时访问外部产品服务失败时,系统如何处理? 通知故障的最直接的方法是抛出一个异常。当访问外部产品数据库失败时,持久化子系统可能抛出异常。 常用的异常处理模式称为“转换异常”模式。转换异常模式的原则是:在一个子系统中,避免直接抛出来自较低层子系统或服务的异常。应该将较低层的异常转换成在本层子系统中有意义的异常。较高层的异常包裹较低层的异常并添加一些信息,使得该异常在较高层的子系统语境中有意义。 方法设计与实现 支付实现 容错处理 非功能性需求设计 支付实现 结束销售后就是获取总额的操作。由控制器发出getTotal()操作并要求返回总额tot。 总额计算得出后就可以进行makePayment()操作。 最后是计算找零的系统操作,将Sale对象与Payment对象相结合。 容错处理 系统的使用过程是首先尝试本地服务,如果没有命中,然后进行尝试外部服务。但这种方案并不是对所有服务都适用,例如账务服务过程中的记录销售,希望快速实时地追踪商店和终端的活动。 代理(Proxy)模式是解决这个问题较好的方案。代理模式的变体称为远程代理(Remote Proxy)模式。 代理模式的另一种变体称为重定向代理(Redirection Proxy)模式,也称为容错代理(Failover Proxy)。 重定向代理 代理模式的基本原则是:通过代理对象增加一层间接性,代理对象实现与subject对象相同的接口,并且负责控制和增强对主体对象的访问。 重定向代理: 向重定向代理发送postSale消息,将其视为实际的外部账务服务; 如果重定向代理通过适配器与外部服务通信失败,则将postSale消息重定向到本地服务。本地服务将Sale保存在本地,当账务服务激活时重新发给它。 抽象工厂模式 POS机系统中,系统需要与各种各样的设备进行工作,包括显示器、票据打印机、现金抽屉、扫描仪等等。这些设备许多都存在工业标准和已经定义好的标准的面向对象接口。例如,UnifiedPOS是为POS机设备定义了接口的工业标准的UML模型。 使用工厂模式从系统属性中读取需要加载的类集,并返回基于其接口的实例。 设备驱动能够与JavaPOS接口进行适配,因此可以看作是适配器对象。它们可以作为代理对象,控制和增强对物理设备访问的本地代理。 识别和显示组合关系 好处: 有利于澄清部分对整体的依赖的领域约束; 有助于使用GRASP创建者模式识别创建者; 对整体的复制、拷贝这些操作经常会传递给部分。 在POS机系统中,SalesLineItems可以被视为Sale的组成部分。 ProductCatalog是ProductDescriptions的一个组成。 时间间隔 例如,POS机系统在初始设计时,SalesLineItems与ProductDescriptions关联,记录了销售项的价格。在精化过程中,需要关注与信息、合同等相关的时间间隔问题。 如果SalesLineItems从ProductDescriptions取得当前价格,当价格改变时,以前的销售将指向新的价格,这很显然是不正确的。 需要区别销售发生时的历史价格和当前价格。 基于信息需求,可以采用两种方法对此问题解决: 一是可以在ProductDescriptions中保存当前价格,仅将销售发生时的价格写入SalesLineItem; 二是将一组ProductPrices与ProductDescriptions关联,每个ProductPrices关联适用的时间间隔。 组织领域模型 将领域模型划分成包结构时,将满足下述条件的元素放在一起: 在同一个主题领域,概念或目标密切相关的元素; 在同一个类层次结构中的关系; 参与同一个用例的元素; 有很强的关联性的元素。 例如,在POS机系统领域模型中包的结构 逻辑架构精化设计 在逻辑架构精化设计中主要更细化各层内部元素、层与层之间关系和分层架构中一些模式的应用。 遵循模型-视图-控制器(MVC)三层模型。在精化逻辑模型时首先要进一步指出个系统层之间、包之间的关系。 可以用依赖线来表达包或者包内类型之间的耦合。 依赖线可以由一个包发出 例如在POS机系统中从Sale包指向POSRuleEngineFacade类,从Domain包指向Log4J包。 分层设计 包在水平和垂直划分上的功能性内聚 由一族接口组成的包 正式

文档评论(0)

132****9295 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档