1 / 41
文档名称:

软件设计模式sdp-第2章.pptx

格式:pptx   大小:1,131KB   页数:41页
下载后只包含 1 个 PPTX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

软件设计模式sdp-第2章.pptx

上传人:qiang19840906 2022/7/31 文件大小:1.10 MB

下载得到文件列表

软件设计模式sdp-第2章.pptx

相关文档

文档介绍

文档介绍:软件设计模式
第2章面向对象程序设计原则
提纲
单一职责原则(SRP)
“开/闭”原则(OCP)
接口隔离原则(ISP)
依赖倒置原则(DIP)
Liskov替换原则(LSP)
(客户)类是否会产生影响?
这种依赖关系不受具体实现类型的影响。因此,PayByEBank类的添加也没有影响到客户类Patron。
从可扩展性和代码稳定性角度看,,符合“开/闭”原则的设计思想。
实施“开/闭”原则设计代码时,工程师可以使用抽象、继承、组合等面向对象技术获得代码灵活性、可重用性、可扩展性等方面的好处。但也应看到,“开/闭”原则对代码还有以下的影响:
1)代码可读性降低。由于使用了抽象,代码设计逻辑与业务需求逻辑相比,会产生变化,抽象代码层隐藏了具体业务细节,大大降低了源码的可读性。
2)程序测试成本增加。同样地,使用抽象设计会使测试人员无法静态确定具体对象的引用类型,必须等到程序运行时才能确定目标对象的具体类型。因此,代码缺陷可能会滞后到程序运行后才被发现;又或者,程序出现错误后,只有通过动态调试的方法才能有效地定位缺陷。最终,它们都会导致测试成本的增加。
接口隔离原则(ISP)
接口隔离原则指出:如果某个接口的行为不是内聚的,就应该按照业务分组,并将分组后的业务行为通过隔离的接口单独定义。
接口的行为要向调用它的客户端提供业务服务;对于不同的业务分组,调用它的客户端是相互独立的;
因此,接口提供的服务(分组)也应该是相互独立的。
打印配送单和发送配送指令行为定义在IDeliver接口中
例如,在COS系统需求中,餐厅员工(Cafeteria Staff)和配餐员(Meal Deliverer)都有打印配送单(Print Delivery Instructions)的行为;而且,餐厅员工还有发送配送指令(Issue Delivery Request)的行为。如果将打印配送单行为和发送配送指令行为强行定义在接口IDeliver中,,将会产生如下问题:
1)子类(或实现类)可能会继承(或实现)冗余行为。配餐员MealDeliverer作为IDeliver的实现类,需要实现issueDeliveryQuest()方法;然而,在COS的需求中,配餐员不具有该行为。
2)子类(或实现类)的客户端受到不相干的业务行为干扰。假设餐厅员工CafeteriaStaff想要改变issueDeliveryQuest()的行为定义,比如修改方法名称;那么,则要修改接口IDeliver。而IDeliver接口的变化会导致实现类MealDeliverer变化,最终影响到调用MealDeliverer的所有客户端。
要解决上面的问题,工程师可以按照接口隔离原则提供的建议将接口中的方法进行业务分组。由于打印打印配送单和发送配送指令是不同的业务行为,两者之间的内聚度很弱,分离它们可以降低相互影响。
使用“接口隔离”原则设计打印配送单和发送配送指令行为
因此,()和issueDeliveryQuest()分别定义在的接口IPrintDelivery和IIssueDelivery中,用于实现行为的隔离;。
IIssueDelivery接口定义了issueDeliveryQuest()行为,IPrintDelivery接口定义了printDeliveryInstruction()行为,彼此独立,互不影响。CafeteriaStaff类实现IIssueDelivery、IPrintDelivery接口,MealDeliverer实现IPrintDelivery接口。
可以看到,MealDeliverer只实现了自身需要的业务行为printDeliveryInstruction(),不用实现冗余行为issueDeliveryQuest(),保证了代码逻辑与需求的一致性。此外,IIssueDelivery接口定义的变化只对其实现类CafeteriaStaff产生影响,而不会对MealDeliverer造成任何影响。

IIssueDelivery接口:
IPrintDelivery接口:
在Java编程语言中,IPrintDelivery接口可以定义printDeliveryInstruction()行为的默认实现,CafeteriaStaff、MealDeliverer根据需求选择重写或使用接

最近更新

冷沉淀在糖尿病足康复治疗中的应用探索 26页

中国历史文化知识竞赛100题含完整答案(全国通.. 14页

中国历史文化知识竞赛100题(名师系列) 14页

县乡教师选调考试《教师职业道德》题库完美版.. 43页

县乡教师选调进城考试《教育心理学》题库【综.. 121页

县乡教师选调进城考试《教育心理学》题库精品.. 124页

县乡教师选调进城考试《教育法律法规》题库附.. 135页

科普知识竞赛题库100道含完整答案(夺冠系列).. 18页

冠状动脉搭桥术后的活动限制说明 26页

冠状动脉搭桥术后患者常见并发症的预防与处理.. 26页

冠状动脉搭桥手术后的家属教育与指导 27页

内训师的教学模式与课程设计 32页

内窥镜在外科手术中的应用 28页

公司培训管理设计方案对员工工作满意度的影响.. 26页

全科医生的血管与淋巴病变检查与治疗方法 27页

全科医生为所有疾病提供咨询和服务 28页

全科医学教育的思维方式培养 26页

全科医学教育中的临床技能训练与临床实习安排.. 30页

全科医学培养中的实践教学方法研究 36页

儿童风疹的诊断与治疗 23页

儿童学龄前期的教育干预与支持 25页

儿童咳嗽的诊断与治疗 23页

儿科重症肺炎的问题解答与研讨 27页

儿保骨科护理进修报告的护理资源与支持 27页

健康教育与促进服务体系 29页

住院医师规范化培训年度工作的放射诊断与医学.. 26页

2024年足球知识题库带精品答案 12页

语音厅小游戏策划方案 3页

游戏推广员的周报 6页

钡盐中钡含量的测定(沉淀重量法) 6页