博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式 依赖倒转原则 & 里氏代换原则
阅读量:4086 次
发布时间:2019-05-25

本文共 978 字,大约阅读时间需要 3 分钟。

依赖倒转原则 & 里氏代换原则

依赖倒置原则

A.高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。

B.抽象不应该依赖于具体,具体应该依赖于抽象。

所谓依赖倒置原则(Dependence Inversion Principle)就是要依赖于抽象,不要依赖于具体。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。

依赖倒置原则个人感悟

依赖倒置原则于现实的例子就是《大话设计模式》里面说到的内存、显卡等部件和主板的关系,内存、显卡等部件就是低层次的模块,主板就是高层次的模块,接口就相当于它们连接的插口。如果主板设计的时候依赖于特定的内存、显卡等部件来设计,那么内存一坏,岂不是整块主板都用不了了?(高层次的模块不应该依赖于低层次的模块)而如果主板依赖于接口(依赖于抽象),那么部件坏了,只要找到相同接口的部件来更换就可以了,而不会影响高层次的主板。同样主板坏了,也不应该让所有部件报废。依赖倒转原则是面向对象的标志,用哪种语言编写程序不重要,如果编写时考虑的是如何针对抽象编程而不是针对细节编程,即程序的所有依赖关系都终止于抽象类或接口。那就是面向对象设计,反之那就是过程化设计。

里氏代换原则

里氏替换原则中说,任何基类可以出现的地方,子类一定可以出现。 LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。

里氏代换原则

里氏代换原则个人感悟

要符合里氏代换原则,在继承的时候,子类不应该覆盖基类的非抽象函数,原因是用户可能会使用一个子类的基类功能来使程序正常运作,但如果你在子类中覆盖了基类的方法,用户由于不知道类的实现原理,就会使程序发生了错误,因此所有派生类的行为功能必须和使用者对其基类的期望保持一致。违反里氏代换原则的继承关系都不应该实现,如正方形是矩形和鸵鸟是鸟的继承关系实际上是错误的,因为子类并与基类的所有功能并不是一致的。如果一个继承类的对象可能会在基类出现的地方出现运行错误,则该子类不应该从该基类继承,或者说,应该重新设计它们之间的关系。符合里氏代换原则的类扩展不会给已有的系统引入新的错误。

里氏代换原则参考:

博文:
作者:bitou_von

依赖倒置原则参考:

书籍:《大话设计模式》
作者:程杰

你可能感兴趣的文章
Springboot框架配置远程Tomcat服务器以及本地Tomcat服务器进行远程debug调试
查看>>
Springboot+Mybatis+Maven项目导出.csv文件
查看>>
Springboot中实现跨域问题,实现前后端完全分离并方便测试.
查看>>
springboot下csv文件下载需要注意得一些细节以及功能得完善
查看>>
MongoDB 环境配置和基本操作-----专属学习笔记
查看>>
Ubuntu 16.04系统下搭建GitLab Server
查看>>
vim编辑器基础指令
查看>>
Linux常用指令笔记
查看>>
GitLab Server 发送邮件给新增用户使其通过邮箱中的链接去指定地址修改登录密码
查看>>
Ubuntu16.04环境下Mysql5.7服务器搭建教程
查看>>
Gradle中配置MyBatis Generator生成映射文件以及映射接口
查看>>
atom常用配置笔记
查看>>
redis安装以及三种启动配置方式
查看>>
Ubuntu下JDK安装教程
查看>>
ubuntu16.04环境下离线安装nodejs教程
查看>>
Ubuntu16.04 环境RabbitMq部署
查看>>
RabbitMq的基本原理概念特性以及使用场景理解
查看>>
Ubuntu16.04 环境kafka部署以及项目demo
查看>>
zookeeper知识点总结
查看>>
Ubuntu 16.04环境下部署maven
查看>>