版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
含弘光大继往开来系统设计的基本思想和原则目录contents010203基本设计思想对象职责分配原则其他原则04总结基本设计思想01陀思妥耶夫斯基(1821-1881)5/2/20264抽象5/2/20265模块化5/2/20266内聚度5/2/20267耦合度5/2/20268关注点分离的形式对象职责分配原则025/2/202610对象职责分配原则的职责-“做”型(Doing)5/2/202611对象职责分配原则的职责-“知道”型(Knowing)5/2/202612职责驱动设计基本原则的九种模式-创建者问题:谁应该负责创建某个类的新实例?5/2/202613职责驱动设计基本原则的九种模式-创建者解决方案当满足以下条件之一时,应将创建A类实例的职责分配给B类,其中B是A的创建者:B包含或由A聚合而成;B记录A;B密切使用A;B具有A的初始化数据,并在创建A时传递这些数据给A。当存在多个A的创建者候选项时,通常选择聚集或包含A的那个类作为创建者。5/2/202614职责驱动设计基本原则的九种模式-创建者65%80%45%30%分析案以在线购物场景为例,顾客通过订单添加需要购买的商品,而订单是单项商品信息的创建者。创建者模式指导对象创建职责的分配,通过保持低耦合,找到与被创建对象有连接的创建者。例5/2/202615职责驱动设计基本原则的九种模式-创建者分析讨论AND创建者模式基于连接被创建对象的创建者,寻找低耦合的方法,适用于组合、部分、容器、内容、记录器与记录等关系。有时将传入初始化数据的类识别为创建者,例如,Payment实例的创建可能由Order作为创建者。复杂对象的创建时,建议使用专门的辅助类(工厂类)委托创建职责,这符合创建者模式的建议。5/2/202616职责驱动设计基本原则的九种模式-创建者100%效果创建者模式有助于实现低耦合,提高可维护性和重用性。创建者与被创建者之间的关联关系可能已经存在,创建者行使创建职责不会增强两者的耦合关系。5/2/202617职责驱动设计基本原则的九种模式-信息专家问题:给对象分配职责的基本原则是什么?5/2/202618职责驱动设计基本原则的九种模式-信息专家解决方案使用“信息专家”或“专家”模式,将职责分配给具有实现该职责所需信息的专家类。5/2/202619职责驱动设计基本原则的九种模式-信息专家65%80%45%30%分析案以在线购物为例,计算商品总价的职责被分配给Order和LineItem类,这两个类是信息专家,因为它们具有完成总价计算所需的信息。例5/2/202620职责驱动设计基本原则的九种模式-信息专家分析讨论AND专家模式基于对象是否具有完成职责所需的信息,是对象设计的基本指导原则。完成职责需要的信息通常分布在不同类型对象中,需要通过多个“局部”信息专家协作来完成任务。专家模式可能导致“拟人化”设计,即软件对象被赋予“主动”承担与自身信息相关职责的能力。专家模式是对真实世界的模拟,将职责分配给具有完成任务所需信息的个体。5/2/202621职责驱动设计基本原则的九种模式-信息专家100%效果对象使用自身信息来完成任务,维持信息的封装性,支持低耦合,形成更健壮和可维护的系统。行为分布在具备所需信息的类之间,提倡定义内聚性更强的“轻量级”类,易于理解和维护。5/2/202622职责驱动设计基本原则的九种模式-低耦合问题:怎样降低依赖性,减少变化带来的影响,提高重用性?5/2/202623职责驱动设计基本原则的九种模式-低耦合解决方案采用“低耦合”设计原则,通过分配职责使耦合性尽可能低,评估可选方案时要考虑低耦合原则。5/2/202624职责驱动设计基本原则的九种模式-低耦合分析讨论AND耦合是度量元素之间连接、感知和依赖程度的度量,高耦合可能导致类难以理解、变化传播和低复用性。面向对象语言中常见的耦合关系包括关联、委托、函数依赖、继承和实现关系。低耦合模式要求避免产生负面影响的高耦合,支持在设计时降低类的依赖性。继承是一种强耦合关系,需要谨慎考虑,以避免高耦合性和混淆不同关注点。在面向对象技术中,适度耦合是正常和必要的,过低或过高的耦合都可能导致问题。高耦合本身不是问题,问题是与不稳定元素的高耦合,设计者应关注提高灵活性和降低耦合的一般性设计。5/2/202625职责驱动设计基本原则的九种模式-低耦合100%效果不受其他构件变化的影响,易于单独理解,便于复用。低耦合有助于减少变化带来的影响,提高系统的稳定性和可维护性。5/2/202626职责驱动设计基本原则的九种模式-高内聚问题:怎样保持对象是功能聚焦的、可理解的、可管理的,并且能够支持低耦合?5/2/202627职责驱动设计基本原则的九种模式-高内聚解决方案采用“高内聚”设计原则,即保持元素职责的相关性和集中度,基于此评估候选方案。5/2/202628职责驱动设计基本原则的九种模式-高内聚分析讨论AND内聚是对元素职责相关性和集中度的度量,高内聚要求元素负责的职责高度相关,避免职责过多或不相关。低内聚的类会导致难以理解、难以复用、难以维护和容易受变化影响的问题。高内聚的类负责某个功能领域中的相对专一职责,与其他类协作完成任务,易于维护、理解和复用。不同功能性内聚程度的场景包括极低内聚、低内聚、高内聚和适度内聚,各有优缺点。高内聚的类通常方法数目较少、功能性相关,易于维护和复用,有助于提高工作效率。5/2/202629职责驱动设计基本原则的九种模式-高内聚100%效果能够更加轻松、清楚地理解设计。简化了维护和改进工作。通常支持低耦合。由于高内聚的类用于特定目的,细粒度、相关性强的功能的重用性增强。5/2/202630职责驱动设计基本原则的九种模式-控制器问题:在UI层之上首先接收和协调(控制)系统操作的第一个对象是什么?5/2/202631职责驱动设计基本原则的九种模式-控制器解决方案使用控制器(Controller),它是UI层之上的第一个对象,负责接收和处理系统操作消息。5/2/202632职责驱动设计基本原则的九种模式-控制器分析讨论AND系统操作是系统的主要输入事件,例如,POS终端的销售员按下“结束销售”按钮发起了系统事件。控制器的职责是接收外部输入事件,协调系统操作,把工作委派给其他对象,不执行大量工作。有两种类型的控制器选择:外观控制器(facadecontroller)代表整个系统、根对象、设备或主要子系统。用例控制器或会话控制器代表会发生系统事件的用例场景,为同一用例场景的所有系统事件使用相同的控制器类。控制器的工作方式可通过图示表示,UI层不包含应用逻辑,将用户请求委派给其他层。5/2/202633职责驱动设计基本原则的九种模式-控制器100%效果增加了可复用和接口可插拔的潜力,不在接口层处理应用逻辑,支持未来应用中的逻辑重用。提供了推测用例状态的机会,可以保证系统操作以合法顺序发生,或推测用例活动和操作的当前状态。这种控制器模式的设计使系统更加灵活,具备良好的可维护性和可扩展性,同时分离了用户界面和应用逻辑,使系统的不同层次更清晰地组织。5/2/202634职责驱动设计基本原则的九种模式-多态性问题:如何处理类型替换?如何创建可插拔软件构件?5/2/202635职责驱动设计基本原则的九种模式-多态性解决方案使用多态性为变化的类型分配职责,而不是通过选择结构进行条件逻辑判断。设计可插拔软件构件,通过多态性处理替换时的类型变化。5/2/202636职责驱动设计基本原则的九种模式-多态性分析讨论AND多态是一个基本的设计原则,用于组织系统如何处理相似的变化,通过多态性分配职责的设计能够方便地扩展以处理新的变化。在面向对象语言中,多态通常通过使用抽象类或接口来实现。选择接口或抽象类取决于是否需要支持多态,同时不希望受限于特定类层次结构。多态的设计通过接口和抽象类的使用,使得系统能够灵活地适应变化,如图4.6所示的通过Shape接口实现面积计算的多态性。对于未来的可能性变化,通过多态性进行灵活性改进是合理的,但需要进行批判性评价,确保变化点在现实中是真实有效的。5/2/202637职责驱动设计基本原则的九种模式-多态性100%效果易于增加新变化所需的扩展,系统能够轻松适应新的实现,无需影响客户代码。5/2/202638职责驱动设计基本原则的九种模式-纯虚构问题:当你并不想违背高内聚和低耦合或其他目标,但是基于专家模式所提供的方案又不合适时,哪些对象应该承担这一职责?5/2/202639职责驱动设计基本原则的九种模式-纯虚构解决方案创造一种人为制造的、不在问题领域内的类,并赋予它一组高内聚的职责,以支持高内聚、低耦合和可复用性。这种类被称为纯虚构(purefabrication)。5/2/202640职责驱动设计基本原则的九种模式-纯虚构分析讨论AND面向对象设计分为表示解析和行为解析两类。有时需要通过行为解析划分职责,而不必创建与真实世界概念相关的类。纯虚构是为了图方便而虚构的类,通常基于功能(或行为)进行划分。很多面向对象设计模式都是纯虚构的例子,如适配器、策略、命令等。识别类是否为纯虚构并不重要,这是一个教学概念,用于表示设计中有些类是基于领域表示,而有些是对象设计者为了方便而虚构的。行为解析和纯虚构有时会被滥用,特别是初学者容易滥用这种方式。需要平衡于表示解析设计的能力,避免滥用导致大量行为对象,对耦合产生不良影响。5/2/202641职责驱动设计基本原则的九种模式-纯虚构100%效果支持高内聚,因为纯虚构类的职责被解析为细粒度,专注于一组特定的相关任务。增加潜在的复用性,因为纯虚构类的细粒度职责可适用于其他应用。5/2/202642职责驱动设计基本原则的九种模式-间接性问题:为了避免两个或多个事物之间直接耦合,应该如何分配职责?如何使对象解耦合,以支持低耦合并提高复用性潜力?5/2/202643职责驱动设计基本原则的九种模式-间接性解决方案将职责分配给中介对象,使其作为其他构件或服务之间的媒介,以避免它们之间的直接耦合。中介实现了其他构件之间的间接性(indirection)。5/2/202644职责驱动设计基本原则的九种模式-间接性分析讨论AND如同大量现有的设计模式是纯虚构的特例一样,许多设计模式也同样是间接性的特例。适配器、外观和观察者就是这样的例子。此外,许多纯虚构是因为间接性而产生的。间接性的动机通常是为了低耦合,即在其他构件或服务之间加入中介以进行解隅。5/2/202645职责驱动设计基本原则的九种模式-间接性100%效果实现了构件之间的低耦合。5/2/202646职责驱动设计基本原则的九种模式-防止异变问题:如何设计对象、子系统和系统,使其内部的变化或不稳定性不会对其他元素产生不良影响?5/2/202647职责驱动设计基本原则的九种模式-防止异变解决方案识别潜在变化或不稳定性的地方,为其创建稳定接口,即使内部发生变化,也不会对外部元素产生不良影响。这里的“接口”是指广义上的访问视图,而不仅仅是面向对象编程语言中的接口定义。5/2/202648职责驱动设计基本原则的九种模式-防止异变分析讨论AND防止变异(PV)是软件设计中非常重要和基本的原则,包括数据封装、多态、接口、虚拟机、配置文件、操作系统等都是防止变异的特例。PV核心机制包括数据封装、接口、多态、间接性和标准。数据驱动设计、服务查询、解释器驱动设计、反射或元级设计等是PV的常见技术。针对现有系统或需求的变化和未来可能产生的变化(进化点)都适用PV,但在应用于进化点时需要谨慎,需权衡预防性工程成本和变化重做设计的成本。5/2/202649职责驱动设计基本原则的九种模式-防止异变100%效果易于扩展,不影响现有客户。低耦合。能够降低变化的成本或影响。其他原则035/2/202651其他原则5/2/202652单一职责原则5/2/202653开闭原
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026安徽宿州市第四人民医院劳务派遣人员招聘12人备考题库带答案详解(完整版)
- 2026广东深圳武宣县中医医院招聘编外聘用人员4人备考题库(第一期)含答案详解(b卷)
- 2026浙江龙游人才科创有限公司招聘热线员1人备考题库含答案详解(典型题)
- 2026贵州省重点产业人才“蓄水池”第三批岗位专项简化程序公开招聘8人备考题库及1套完整答案详解
- 2026辽宁丹东凤城市中心医院招聘卫生专业技术人员7人备考题库(二)及一套完整答案详解
- 2026第二季度陆军第82集团军医院社会聘用人员招聘53人备考题库及答案详解(网校专用)
- 2026重庆旅游资产管理有限公司统景景区管理分公司招聘3人备考题库及答案详解(考点梳理)
- Unit 13Section A 1a-2d教案 2025-2026学年人教版九年级英语全一册
- 保险产品设计与风险防范手册
- 油气勘探与开采手册
- 2026中国联通秋季校园招聘考试参考题库及答案解析
- 降低呼吸机相关性肺炎的品管圈
- 2025年湖南省长沙市初中学业水平考试中考(会考)地理试卷(真题+答案)
- 春耕开犁活动方案
- 2025年河北高考化学试卷真题及答案详解(精校打印版)
- T/CECS 10410-2024废弃混凝土活性再生微粉
- 2022年高考历史试卷(山东)(解析卷)
- 能源与动力工程测试技术 课件 第八章 液位测量
- 设备运维的标准化与规范化管理
- 2025年度建筑行业安全生产资金投入计划
- TSHAEPI 016-2024 风冷热泵机组噪声振动控制技术要求
评论
0/150
提交评论