【0718作业】收集和整理面向对象的六大设计原则
面向对象的六大设计原则
(1)单一职责原则——SRP
(2)开闭原则——OCP
(3)里式替换原则——LSP
(4)依赖倒置原则——DIP
(5)接口隔离原则——ISP
(6)迪米特原则——LOD
——————————————————————————————
单一职责原则
一个类,只有一个引起它变化的原因,只有一个职责。
如果一个类承担的职责过多,就等于把这些职责耦合在一起了。一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当发生变化时,设计会遭受到意想不到的破坏。而如果想要避免这种现象的发生,就要尽可能的遵守单一职责原则。此原则的核心就是解耦和增强内聚性。
(1)可以降低类的复杂度(2)提高类的可读性,和系统的维护性(3)当发生变化的时候,能将变化的影响降到最小,因为只会在这个类中做出修改。
开闭原则
开闭原则规定“软件中的对象(类,模块,函数等等)应该对于扩展是开放的,但是对于修改是封闭的,这意味着一个实体是允许在不改变它的源代码的前提下变更它的行为。该特性在产品化的环境中是特别有价值的,在这种环境中,改变源代码需要代码审查,单元测试以及诸如此类的用以确保产品使用质量的过程。遵循这种原则的代码在扩展时并不发生改变,因此无需上述的过程。
当需求发生改变的时候,我们需要对代码进行修改,这个时候我们应该尽量去扩展原来的代码,而不是去修改原来的代码,用抽象去构建框架,用实现扩展细节。这样当发生修改的时候,我们就直接用抽象了派生一个具体类去实现修改。
里氏替换原则
在面向对象的程序设计中,里氏替换原则是对子类型的特别定义。“派生类(子类)对象可以在程式中代替其基类(超类)对象。”子类可以去扩展父类的功能,但是不能改变父类原有的功能。【里氏替换原则和开闭原则往往是相互依存的。】
1)子类可以实现父类的抽象方法,但是不能覆盖父类的非抽象方法。
2)子类可以增加自己独有的方法。
3)当子类的方法重载父类的方法时候,方法的形参要比父类的方法的输入参数更加宽松。
4)当子类的方法实现父类的抽象方法时,方法的返回值要比父类更严格。
依赖倒置原则
是指一种特定的解耦(传统的依赖关系创建在高层次上,而具体的策略设置则应用在低层次的模块上)形式,使得高层次的模块不依赖于低层次的模块的实现细节,依赖关系被颠倒(反转),从而使得低层次模块依赖于高层次模块的需求抽象。高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。依赖于抽象,不要依赖于具体。
接口隔离原则
客户端应该不依赖于它不使用的方法。使用多个隔离的接口,比使用单个接口要好。目的是系统解开耦合,从而容易重构,更改和重新部署。在面向对象设计中,接口(interface)提供了便于代码在概念上解释的抽象层,并创建了避免依赖的一个屏障。
建立单一接口,不要建立庞大臃肿的接口,尽量细化接口,接口中的方法尽量少。
△接口隔离原则使用注意:
1)接口尽量小,但是要有限度。对接口进行细化可以提高程序设计灵活性是不挣的事实,但是如果过小,则会造成接口数量过多,使设计复杂化。所以一定要适度。
2)为依赖接口的类定制服务,只暴露给调用的类它需要的方法,它不需要的方法则隐藏起来。只有专注地为一个模块提供定制服务,才能建立最小的依赖关系。
3)提高内聚,减少对外交互。使接口用最少的方法去完成最多的事情。
迪米特原则
一个对象应该对其他对象保持最少的了解。因为类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大,所以这也是我们提倡的软件编程的总的原则:低耦合,高内聚。一个类对自己依赖的类知道的越少越好。也就是说,对于被依赖的类来说,无论逻辑多么复杂,都尽量地的将逻辑封装在类的内部,对外除了提供的public方法,不对外泄漏任何信息。
转载于:https://www.cnblogs.com/yanglanlan/p/11222995.html
【0718作业】收集和整理面向对象的六大设计原则相关推荐
- 面向对象六大设计原则上
@TOC面向对象六大设计原则 最近准备java面试,发现SSM框架里蛮多知识点,比如Spring中IOC,DI来源于面向对象的六大原则,了解六大原则有助于更深入理解java的设计原理.网上资料很多,整 ...
- “设计模式之禅”——六大设计原则详解解读
目录 一.单一职责原则 二.里氏替换原则 三.依赖倒转原则 四.接口隔离原则 五.迪米特法则 六.开闭原则 一.单一职责原则 单一职责原则的英文名称是:Single Responsibility Pr ...
- [转] 设计模式的六大设计原则
转载说明: 感谢原作者吕震宇老师的分享. 原文参考链接:https://www.cnblogs.com/zhenyulu/category/6930.html? 本次转载只用于个人学习使用,并不涉及商 ...
- 引用防删——JAVA设计模式总结之六大设计原则
JAVA设计模式总结之六大设计原则 从今年的七月份开始学习设计模式到9月底,设计模式全部学完了,在学习期间,总共过了两篇:第一篇看完设计模式后,感觉只是脑子里面有印象但无法言语.于是决定在看一篇,到9 ...
- 设计模式之六大设计原则【入门】
设计模式之六大设计原则 1 开闭原则 Open Closed Principle,OCP 1.1 概念 1.2 软件实体 1.3 开闭原则的作用 2. 单一职责原则 Single responsibi ...
- 设计模式必备知识点----六大设计原则
六大设计原则 一,开闭原则 开闭原则的定义 什么是开闭原则 开闭原则的作用 开闭原则的优点 二,单一职责原则 单一职责定义 单一职责的作用 单一职责的优点 单一职责的违背原则 三,依赖倒置原则 依赖倒 ...
- 设计模式的六大设计原则
设计模式的六大设计原则 1. 开闭原则 1.1 开闭原则:Open Closed Principle,OCP 1.2 开闭原则的作用 2. 单一责任原则 2.1 单一职责原则:Single respo ...
- 设计模式—六大设计原则
本文开始对<设计模式之禅>进行学习总结,首先是六大设计原则. 单一职责原则 单一职责原则(Single Responsibility Principle)简称SRP,这个原则存在的争议之处 ...
- 六大设计原则SOLID
六大设计原则SOLID 一.SOLID 设计模式的六大原则 二.单一职责原则 (Single Responsibility Principle) 1. 单一职责原则定义 2. 问题由来 3. 解决方案 ...
最新文章
- 从事JAVA 20年最终却败给了Python,哭了!
- AI一分钟|传谷歌正与腾讯等洽谈合作,欲在中国推云服务;国产超算运算速度或达每秒百亿亿次...
- javascript运行时问题
- 图像处理和计算机视觉中的经典论文(部分)
- ZOJ - 4114 Flipping Game(dp+组合数学)
- 微信小程序,引用扩展组件提示“没有找到可以构建的NPM包”
- 讲重点,看趋势——Microsoft Ignite 2018的回顾和展望
- 怎样把照片中的头像扶正_微信头像用对了,2020运气差不了
- gpu服务器性能测试用例,多目标测试用例预优化方法及其在GPU上的应用研究
- 第2章 数据库系统体系结构
- 【java学习之路】(javaWeb【后端】篇)005.会话
- 《寒江独钓》的作者教您如何高效阅读本书
- HBuilder的app自动更新
- java 浏览器 爬虫_[Java教程]在浏览器客户端进行爬虫开发
- 通过配置ant提高EJB开发效率
- 微软雅黑的字体设置css,css如何设置字体为微软雅黑
- Python Learn 2 -- 高级特性、函数式编程
- Windows10添加自定义右键菜单(详细步骤)
- python从入门到入魔第八天——turtle库使用(含玫瑰花绘制实例)
- HDCP Paring