- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章 设计原则
第六章 设计原则;本章教学内容;一、单一职责原则;3. 解决办法
遵守单一职责原则,将不同的职责封装到不同的类或模块中。
4. 举例
开发一个俄罗斯方块游戏,要考虑将程序分为游戏逻辑和界面逻辑两个类。游戏逻辑指表示游戏区域的数组中每一项值变化的问题,如下落、旋转、碰撞检测、移动等;界面逻辑负责根据数组的数据进行绘制和擦除等。
;二、开放——封闭原则
开放——封闭原则(Open Closed Principle,简称OCP)
1. 核心思想
软件实体(类、模块、函数等)应该是可扩展,而不可修改的。也就是说,对扩展是开放的,而对修改是封闭的。
对扩展开放,意味着有新的需求或变化时,可以对现有代码进行扩展,以适应新的情况;
对修改封闭,意味着类一旦设计完成,就不要对类进行任何修改。
; 2.产生原因
“需求总是变化的”、“世界上没有一个软件是不变的”,因此对于软件设计者来说,必须在不修改原有系统的情况下,实现灵活的系统扩展。
3. 实施办法
只有依赖于抽象。实现开放封闭的基本思路就是对抽象编程,而不对具体编程,因为抽象相对稳定。让类依赖于固定的抽象,所以对修改就是封闭的;而通过面向对象的继承和多态机制,可以实现对抽象体的继承,通过覆写其方法来改变固有行为,实现新的扩展方法,所以对于扩展就是开放的。;三、依赖倒转原则
依赖倒转原则( Dependence Inversion Principle ,简称DIP)
1. 核心思想
(1) 高层模块不应该依赖低层模块,两者都应该依赖于抽象。
(2)抽象不应该依赖于细节。细节应该依赖抽象(要针对接口编程而不要针对实现编程)。
其中,抽象指抽象类或接口;细节指具体实现类。
依赖倒转原则的本质是通过抽象(抽象类或接口)使各个类或模块的实现彼此独立,不相互影响,实现模块间的松耦合。;1)如何理解高层模块不应该依赖低层模块,两者都应该依赖于抽象
在面向过程的开发中,为了使常用的代码可复用,一般都会把这些常用的代码写成许许多多函数的程序库,这样做新项目的时候调用这些函数就可以了。
例如:我们做的项目大多要访问数据库,所以我们就把数据库的代码写成了函数,每次做新项目时就去调用这些函数,这就是高层依赖于低层模块。问题是,我们在做新项目的时候,会发现业务逻辑的高层模块是一样的,我们希望能重用这些高层模块,但是这些高层模块和低层模块的数据库绑定在一起了,这样就没办法复用这些高层模块。
如果高层模块和低层模块都依赖于抽象(接口或抽象类),只要接口稳定,那么任何一个更改都不用担心其他受到影响了。;2)针对接口编程而不是针对实现编程意义
我们现在使用的电脑有各式的品牌,联想、神舟、戴尔等等,电脑需要用到鼠标,键盘;假设鼠标、键盘是针对某一个品牌的机器实现去做的话,那么市面上的键盘和鼠标就都是各式各样的,有一天鼠标或键盘坏了,我们要记住这个电脑是什么品牌、什么型号的再去买,很麻烦。
现在的电脑基本上都是使用USB接口,无论是键盘也好,鼠标也好,只要买USB接口的就可以使用。同时,使用USB接口还可以有其他的扩展,例如,实现了USB接口的小台灯,只要接上USB线就可以照明、实现了USB接口的充电器,接到电脑上就可以充电。?
;
一些生活中的例子:
1、AGP插槽。主板和显卡之间关系的抽象。
主板和显卡通常是使用AGP插槽来连接的,只要接口适配,不管是主板还是显卡更换,都不是问题。
2、驾照。司机和汽车之间关系的抽象。
有驾照的司机可以驾驶各种汽车。
3、电源插座。;2. 实现方法
在实际编程中,一般需要做到如下3点:
低层模块尽量都要有抽象类或接口,或者两者都有。
变量的声明类型尽量是抽象类或接口。
使用继承时遵循里氏替换原则。
????一句话,依赖倒转原则的核心就是要面向接口编程。
;四、迪米特法则(P100)
迪米特法则(Law of Demeter,简称 LoD)又称为最少知识原则
1. 核心思想
一个对象应当对其他对象有尽可能少的了解,不和陌生人说话。 迪米特法则不希望类之间建立直接的联系。如果真的有需要建立联系,也希望能通过它的友元类来转达。
2. 产生原因
类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。;3. 解决方案
降低类之间的耦合。一个软件实体应当尽可能少的与其他实体发生相互作用。每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位。
由于每个类尽量减少对其他类的依赖,因此,很容易使得系统的功能模块功能独立,相互之间
您可能关注的文档
- 第5章 膜分离--22.ppt
- 第5章 植物的类群.ppt
- 第5章 负反馈放大器.ppt
- 第5章 静态侦测与防火墙技术.ppt
- 第5章 电动机与拖动基础.ppt
- 第5章 集成触发器 10-21.ppt
- 第5章 运输问题与指派问题.ppt
- 第5章(5,7).ppt
- 第5章(数组和广义表).ppt
- 第5章-数组与广义表-4学时.pptx
- 2025年二手奢侈品鉴定技术标准深度研究报告.docx
- 2025年储能设备环境友好性在智能微电网中的应用研究.docx
- 2025年在线教育平台防沉迷系统在促进教育可持续发展中的应用效果分析.docx
- 2025年工业机器人故障预测与健康管理技术关键技术与产品研发报告.docx
- 文创盲盒市场渠道拓展与消费群体研究.docx
- 文创IP衍生品设计在2025年的创意融合与市场拓展.docx
- 新解读《GB_T 41344.2 - 2022机械安全 风险预警 第2部分:监测》.docx
- 共享健身仓用户健身行为引导与运动社区构建报告.docx
- 合成生物学实验伦理审查标准与实际操作对比分析.docx
- 酒店业新品牌战略研究报告:连锁酒店品牌线拓展策略与实施建议.docx
文档评论(0)