【设计模式系列学习笔记】5、依赖倒转原则和里氏代换原则
依赖倒转原则:抽象不应该依赖细节,细节应该依赖于抽象;
针对接口编程,不要对实现编程;
- 高层模块不应该依赖底层模块,两个都应该依赖抽象;
- 抽象不应该依赖细节,细节应该依赖抽象;
里氏代换原则
一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且它察觉不出父类对象和子类对象的区别。也就是说,在软件里,把父类都替换成它的子类,程序的行为没有变化。简单说,子类型必须能够替换掉它们的父类型。
只有当子类可以替换掉父类,软件单位的功能不受到影响时,父类才能真正被复用,而子类也能够在父类的基础上增加新的行为。
由于子类型的可替换性才使得使用父类类型的模块在无需修改的情况下就可以扩展。
依赖倒转其实可以说是面向对象设计的标志,用哪种语言来编写程序不重要,如果编写时考虑的都是如何针对抽象编程而不是针对细节编程,即程序中所有的依赖关系都是终止于抽象类或者接口,那就是面向对象的设计,反之那就是过程化的设计了。
【设计模式系列学习笔记】5、依赖倒转原则和里氏代换原则相关推荐
- 带你认识六种设计原则(开闭原则、里氏代换原则、依赖倒转原则....)
前言 1. 设计原则 1.1. 开-闭原则 1.2. 里氏代换原则 1.3. 依赖倒转原则 1.4. 接口隔离原则 1.5. 合成/聚合原则 1.6. 迪米特法则 前言 学习设计模式之前先要了解其中的 ...
- 依赖倒转原则和里氏代换原则详解
初学依赖倒转原则和里氏代换原则时,由于笔者水平有限,并没有看懂书上的专业术语的解释,经过反复摸索和学习,发现里氏代换原则和依赖倒转原则可以一言以蔽之: 里氏代换原则:开发时以抽象为核心,针对抽象编程, ...
- 设计原则 单一职责原则、开放封闭原则、依赖倒置原则、里氏代换原则、迪米特法则
目录 1 单一职责原则 2 开放封闭原则 3 依赖倒置原则 4 里氏代换原则 5 迪米特法则 1 单一职责原则 比如:电脑内存坏了就应该更换内存,不应该更换CPU (内存负责内存.CPU负责CPU) ...
- 设计模式-设计原则之里氏代换原则
设计原则之里氏代换原则 里氏代换原则 案例(正方形不是长方形) 案例改进 里氏代换原则 里氏代换原则是面向对象设计的基本原则之一. 里氏代换原则:任何基类可以出现的地方,子类一定可以出现. 通俗理解: ...
- Java设计原则之单一职责原则、开闭原则、里氏代换原则
文章目录 面向对象设计原则概述 单一职责原则 开闭原则 里氏代换原则 面向对象设计原则概述 软件的可维护性(Maintainability)和可复用性(Reusability)是两个非常重要的用于衡量 ...
- Java设计模式之设计的6大原则(开闭原则,里氏代换原则,依赖倒转原则,接口隔离原则,最少知道原则,合成复用原则)
1. 开闭原则 核心思想:一个对象对外扩展开发,对修改关闭 意思就是:对类的改动是通过增加代码进行的,而不是修改现有的代码. 也就是说软件开发人员一旦写出了可以运行的代码,就不应该去改动它,而是要保证 ...
- 大话设计模式三之单一职责原则、开放-封闭原则、依赖倒置原则、里氏代换原则
单一职责原则 单一职责原则(SRP),意思就是说,功能要单一.准确解释是,就一个类而言,应该仅有一个引起它变化的原因. 如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或 ...
- 面向对象——依赖倒转原则和里氏代换原则
什么是依赖倒转原则 下面三个就是 高层模块不依赖低层模块 抽象不依赖细节 细节依赖抽象 为什么需要这个原则? 假设现在需要开发一个软件,其中某个功能需要和数据库进行操作 那么,马上能想到的方法是不是就 ...
- 依赖倒转原则与里氏代换原则
看了一下书,还是慢慢感受到了面向对象编程的强大,依赖倒转原则的思想主要是:面向抽象(接口)编程,而不是针对细节编程.面向抽象编程的自己理解就是先将某个具体的事物先扩大,抽象成一类事物,先对这一类事物进 ...
最新文章
- iOS开发之UIWebView
- object-c 随机数总结
- Jerry和您聊聊Chrome开发者工具
- 华为最新全系列交换机命令手册、配置指南下载
- java比较炫的小程序_有人不建议学Java,有人不建议学Python,该怎么选择
- Oracle J.D.Edwards技术与应用
- leetcode探索动态规划(一)
- php 连接芒果数据库,芒果数据库mongoDB
- 12个免费矢量免抠素材网站
- 单GPU实现20Hz决策,最新基于序列生成模型的高效轨迹规划方法
- 物联网-电力监控平台(汇总)
- Axure中插入Highcharts动态图表
- PyCharm 里面的 c、m、F、f、v、p 分别代表什么含义?
- 微信公众号 用户绑定 php,微信公众号开发——网页授权实现简化用户绑定
- 苹果ipa签名工具免越狱下载_iOS 13.5.5 beta 越狱来了,支持手机版越狱
- matlab画线的形状颜色
- 英国大学入学要求只是A-level/IB成绩吗
- 防泄密-应用软件研发行业源代码防泄密及技术文档防泄密解决方案
- 详解 springboot 多线程处理任务无法注入bean
- 分享三套美团面试经历+简单答案
热门文章
- 做第一批35岁就退休的90后,需要几步?
- ChromeFK插件推荐系列二十三:在线文字转语音/语音朗读插件推荐
- python股票回测源码_Python爬虫回测股票的实例讲解
- Xamarin.Forms学习之路——黑猫时钟App
- 便签 java_基于安卓Android的便签笔记APP设计(Android studio)
- 存储过程,使用游标,详细过程及详解
- java表格组件_表格组件 java
- php 图片获得大小,PHP获取一张图片的宽度和高度大小 并裁切图片
- 05 CSS从原理到熟练 - 1
- 如何高效的使用mac