北风设计模式课程---里氏代换原则

一、总结

一句话总结:

视频教程网上一定能找到做好笔记的博客,很大几率都不需要自己做笔记。比如北风设计模式课程,https://www.cnblogs.com/xiaobai1226/p/8664621.html,这个博客就做好了完整的笔记。

1、里氏代换原则(LSP) 是什么?

1、一个软件如果使用的是一个父类的话, 那么一定适用于其子类, 而察觉不出父类对象和子类对象的区别。 也即是说,在软件里面, 把父类替换成它的子类, 程序的行为不会有变化, 简单地说, 子类型必须能够替换掉它们的父类型。
2、子类型必须能够替换掉它们的父类型。
3、这就像继承中的概念,子类继承与父类,所以子类可以以父类的身份出现。

2、继承复用(扩展)成为 可能 是因为什么原则?

里氏代换原则(LSP):只有当子类可以替换掉父类, 软件单位的功能不受到影响时,父类才能真正被复用, 而子类也能够在父类的基础上增加新的行为。
扩展:正是由于子类型的可替换性才使得使用父类类型的模块在无需修改的情况下就可以扩展、不然还谈什么扩展开放,修改关闭呢

3、依赖倒置原则 是什么?

1、高层模块不应该依赖低层模块, 两个都应该依赖抽象:高层模块不要继承低层模块,要继承接口或抽象。
2、实例:正方形不应该继承长方形,而正方形和长方形都应该继承接口 四边形
3、依赖倒置其实就是谁也不依靠谁, 除了约定的接口, 大家都可以灵活自如。

4、面向对象编程的实质?

针对抽象编程:依赖倒置可以说是面对对象设计的标志,用哪种语言来编写程序不重要,如果编写时考虑的都是如何针对抽象编程而不是针对细节编程,即程序中所有的依赖关系都是终止与抽象类或者接口, 那就是面向对象的设计,反之那就是过程化的设计了。

5、面对抽象编程最核心的原则是什么?

依赖倒置:依赖倒置可以说是面对对象设计的标志,用哪种语言来编写程序不重要,如果编写时考虑的都是如何针对抽象编程而不是针对细节编程,即程序中所有的依赖关系都是终止与抽象类或者接口, 那就是面向对象的设计,反之那就是过程化的设计了。

二、里氏代换原则

转自或参考:里氏代换原则
https://blog.csdn.net/qq_41405257/article/details/80369811

里氏代换原则的白话翻译是: 一个软件如果使用的是一个父类的话, 那么一定适用于其子类, 而察觉不出父类对象和子类对象的区别。 也即是说,在软件里面, 把父类替换成它的子类, 程序的行为不会有变化, 简单地说, 子类型必须能够替换掉它们的父类型。

里氏代换原则(LSP): 子类型必须能够替换掉它们的父类型。

这就像继承中的概念, 子类继承与父类, 所以子类可以以父类的身份出现。 举个例子企鹅 和鸟的关系, 企鹅在生物学上属于鸟类, 但在面对对象设计中 企鹅并不能以父类(鸟)的身份出现 ,因为企鹅并不具备鸟飞行的行为。

 

也正因为这个原则, 使得继承复用成为了可能, 只有当子类可以替换掉父类, 软件单位的功能不受到影响时,父类才能真正被复用, 而子类也能够在父类的基础上增加新的行为。

正是由于子类型的可替换性才使得使用父类类型的模块在无需修改的情况下就可以扩展、不然还谈什么扩展开放, 修改关闭呢。 再回过头来看依赖倒置原则, 高层模块不应该依赖低层模块, 两个都应该依赖抽象,也就更容易理解了。

依赖倒置其实就是谁也不依靠谁, 除了约定的接口, 大家都可以灵活自如。

当一个软件系统强耦合组成太多了, 就会面临各种问题, 如果完全面对对象来设计, 那么当出现问题的时候 排查和维护也就更容易的多。 依赖倒置可以说是面对对象设计的标志, 用哪种语言来编写程序不重要, 如果编写时考虑的都是如何针对抽象编程而不是针对细节编程, 即程序中所有的依赖关系都是终止与抽象类或者接口, 那就是面向对象的设计, 反之那就是过程化的设计了。

转载于:https://www.cnblogs.com/Renyi-Fan/p/11107001.html

北风设计模式课程---里氏代换原则相关推荐

  1. 北风设计模式课程---里氏替换原则(Liskov Substitution Principle)

    北风设计模式课程---里氏替换原则(Liskov Substitution Principle) 一.总结 一句话总结: 当衍生类能够完全替代它们的基类时:(Liskov Substitution P ...

  2. 北风设计模式课程---单一职责原则

    北风设计模式课程---单一职责原则 一.总结 一句话总结: 视频教程网上一定能找到做好笔记的博客,很大几率都不需要自己做笔记.比如北风设计模式课程,https://www.cnblogs.com/xi ...

  3. 大话设计模式三之单一职责原则、开放-封闭原则、依赖倒置原则、里氏代换原则

    单一职责原则 单一职责原则(SRP),意思就是说,功能要单一.准确解释是,就一个类而言,应该仅有一个引起它变化的原因. 如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或 ...

  4. Android大话设计模式 第四章----里氏代换原则----法海捉拿白蛇新解

    应用场景举例: <白蛇传>是中国四大民间传说之一,妇孺皆知. 在大多数人的感觉和印象中,白蛇是一个善良痴情.知恩图报.温柔友善.美貌绝伦.冰雪聪明.明辨是非.救苦救难的活菩萨:而法海却是一 ...

  5. 里氏代换原则在Java以及设计模式中的体现

    ​里氏代换原则在Java中的体现 前面说了里氏代换原则,那么现在说一下里氏代换原则在Java中的使用. 里氏代换原则要求父类类型可以使用的,那么子类一定可以适用.因此子类必须具有基类的全部接口,并且可 ...

  6. Java设计模式之设计的6大原则(开闭原则,里氏代换原则,依赖倒转原则,接口隔离原则,最少知道原则,合成复用原则)

    1. 开闭原则 核心思想:一个对象对外扩展开发,对修改关闭 意思就是:对类的改动是通过增加代码进行的,而不是修改现有的代码. 也就是说软件开发人员一旦写出了可以运行的代码,就不应该去改动它,而是要保证 ...

  7. java设计模式之设计原则⑥里氏代换原则

    定义: (1)一个软件实体如果使用的是一个父类的话,那 么一定适用于其子类,而且它察觉不出父类和子 类对象的区别.也就是说,在软件里面,把父类 替换成它的子类,程序的行为没有变化. (2)一个软件实体 ...

  8. 【设计模式】五:依赖倒置与里氏代换原则

    /** * 依赖倒转原则 * 定义: 抽象不应该依赖细节,细节应该依赖于抽象 * 解释:开发过程中,要学会针对接口编程,不要针对需求进行编程 * 特征: * 高层模块不应该依赖低层模块,两个都应该依赖 ...

  9. 【设计模式系列学习笔记】5、依赖倒转原则和里氏代换原则

    依赖倒转原则:抽象不应该依赖细节,细节应该依赖于抽象: 针对接口编程,不要对实现编程: 高层模块不应该依赖底层模块,两个都应该依赖抽象: 抽象不应该依赖细节,细节应该依赖抽象: 里氏代换原则 一个软件 ...

最新文章

  1. python中format函数用法简书_Python 中format 的用法
  2. 云炬Android开发笔记 2-1项目初始化
  3. vue 返回上一页传参_H5页面与微信小程序相互跳转并传参(web-view)
  4. 软件架构师的工作流程
  5. Cron表达式【一】
  6. Maven Optional Exclusions使用区别
  7. 解决IE6透明PNG图片的代码
  8. LeetCode 1533. Find the Index of the Large Integer(二分查找)
  9. java listview控件_ListView普通列表控件的使用
  10. linux怎么改程序图标,如何在Ubuntu Unity上修改应用程序图标
  11. 大佬就是有想法!比尔盖茨办公室曝光:实体版元素周期表震撼!
  12. 信贷评分卡的顶层设计思路
  13. 操作系统--进程管理1--单个CPU情况
  14. Kubernetes详解(八)——Kubernetes资源配置清单
  15. power designer 连接数据库以及 Could not Initialize JavaVM! 错误的解决
  16. 离散数学程序实现——求关系矩阵的自反和对称闭包——c
  17. 大淘客cms源码修改二次开发实现淘京拼三合一功能
  18. websphere修改协议为TLS1.2
  19. 高老师的架构设计_隽语集(AA_0151)
  20. proxifier安装激活使用

热门文章

  1. 改善C#程序的建议1:非用ICloneable不可的理由
  2. Unity 多人签名
  3. 高中时候想的一个脑洞大开的故事
  4. 模拟信号到数字信号转化_从模拟到数字再返回
  5. 你了解这些常用器件封装及其名字来历么?
  6. exiftool 删除和添加图片旋转信息
  7. html excel 在线查看,web在线查看服务器的Excel文件
  8. asp新闻发布系统 html,构建你的网站新闻自动发布系统之一_asp实例
  9. STC8单片机ADC采样注意事项
  10. win10全屏之后任务栏不消失的问题