敏捷软件开发第五讲开闭原则与里氏替换原则课件
34页1、第五讲:开闭原则与里氏替换原则,目录,开放封闭原则(OCP) OCP编程实例 OCP原则实施要点 Liskov替换原则 Liskov原则实施要点 总结,开放封闭原则(OCP),什么是软件开发过程中最不稳定的因素? 答案是需求!需求在软件开发过程中时时刻刻都可能发生变化。那么,如何灵活应对变化是软件结构设计中最重要也是最困难的一个问题。好的设计带来了极大了灵活性,不好的设计则充斥着僵化的臭味。所以我们要遵循开放封闭原则OCP。,开放封闭原则(OCP),Bertrand Meyer,面向对象技术大师,发明了Eiffel 语言和按契约设计(Design by Contract)的思想,名著面向对象软件构造的作者,法国工程院院士。目前,他除了担任Eiffel环境和工具开发公司ISE的CTO之外,还是爱因斯坦的母校苏黎世联邦工学院计算机科学系教授,担任软件工程项目主席,同时还在澳大利亚Monash大学任教。他于1988年提出了著名的开放封闭原则(OCP)。,开放封闭原则的现实意义,开放封闭原则(OCP,Open Closed Principle)是所有面向对象原则的核心。软件设计本身所追求的目标
2、就是封装变化、降低耦合。而开放封闭原则正是对这一目标的最直接体现。其他的设计原则,很多时候是为实现这一目标服务的,例如后面将介绍的Liskov替换原则实现最佳的、正确的继承层次,就能保证不会违反开放封闭原则。 OCP核心的思想是: 软件实体应该是可扩展,而不可修改的。也就是说,对扩展是开放的,而对修改是封闭的。,OCP特征,软件实体(类、模块、函数等)应该是可扩展的,但是不可修改的。OCP有两大特征: 对于扩展是开放的(Open for extension) 模块的行为可以扩展,当应用的需求改变时,可以对模块进行扩展,以满足新的需求。 对于更改是封闭的(Closed for modification) 对模块行为扩展时,不必改动模块的源代码或二进制代码。,OCP的关键在于抽象,OCP的关键在于抽象 抽象技术:abstract class, Interface 抽象预见了可能的所有扩展(闭) 由抽象可以随时导出新的类(开),范例:手与门,如何在程序中模拟用手去开门和关门? 行为: 开门(open) 关门(close) 判断门的状态(isOpened),设计实现,public class
3、Door private boolean _isOpen=false; public boolean isOpen() return _isOpen; public void open() _isOpen = true; public void close() _isOpen = false; ,public class Hand public Door door; void do() if (door.isOpen() door.close(); else door.open(); ,public class SmartTest public static void main(String args) Hand myHand = new Hand(); myHand.door = new Door(); myHand.do(); ,新的需求,需要手去开关抽屉,冰箱?,我们只好去修改程序!,解决新的需求:修改设计,public class Hand public Door door; public Drawer drawer; void do(int item) switch (ite
4、m) case 1: if (door.isOpen() door.close(); else door.open(); break; case 2: if (drawer.isOpen() drawer.close(); else drawer.open(); break; ,public class SmartTest public static void main(String args) Hand myHand = new Hand(); myHand.door = new Door(); myHand.do(1); ,手被改了! 主(使用手)程序也被改了!,符合OCP的设计方案,public interface Excutable public boolean isOpen(); public void open(); public void close(); ,新的实现,public class Door implements Excutable private boolean _isOpen = false; public boolean isOpen() return
《敏捷软件开发第五讲开闭原则与里氏替换原则课件》由会员我***分享,可在线阅读,更多相关《敏捷软件开发第五讲开闭原则与里氏替换原则课件》请在金锄头文库上搜索。
2020届中考英语备考复习-作文课件
2019年中考英语复习-专题十五-交际运用(试卷部分)课件
2019届二轮复习-高中英语-情态动词和虚拟语气课件
2019届一轮复习苏教版物质的跨膜运输课件
2019年北师大版英语单元复习课件::Unit17Laughter课件北师大版选修6
2021届新中考物理冲刺备考复习-力-弹力-重力课件
2019届一轮复习人教版种群的特征和数量变化课件
2020年高考地理一轮复习--等高线地形图-课件
2019版高考英语一轮复习-Unit-1-Living-well课件
2019届一轮复习人教版孟德尔的遗传定律——基因分离定律课件
2019届高三第二轮复习专题二万有引力定律及其应用课件
2020最新部编版语文五年级上册23-鸟的天堂课件含课后练习
2020版高考(浙江)一轮复习:第7讲-细胞呼吸课件
2020年新教材高中英语UNIT4HISTORYANDTRADITIONSSectionⅢDiscoveringUsefulStructures课件必修第二册
2019届高考历史二轮复习阶段三专题十三罗斯福新政与当代资本主义的新变化课件2
2019版高考生物二轮复习-专题三-细胞的生命历程-考点9-细胞分裂过程图像和坐标曲线的识别课件
(通史版)2021版高考历史一轮复习第4部分高考讲座(三)2高考非选择题(12分开放探究题)规范答题讲练课件
2019届高三地理复习第五讲--《区际联系与区域协调发展》课件
2021人教部编版历史九年级上册习题课件:第18课美国的独立
2020学年新教材高中英语Unit1FoodforthoughtPeriodTwoStartingout课件
2024-04-18 25页
2024-04-18 29页
2024-04-18 38页
2024-04-18 16页
2024-04-09 21页
2024-04-09 26页
2024-04-09 28页
2024-04-09 19页
2024-04-09 26页
2024-04-09 23页