里氏替换原则_代码需要有单一职责,还要开闭,里氏替换又是什么鬼?
目录
单一职责原则:
开闭原则:
里氏替换原则:
单一职责原则:
每一个系统中的功能都表示一个职责,这些职责可以映射到模块(类)中,
且尽可能的保证这些类中没有功能上的重复,设计中每次应只关注一个职责,
但也不要把其他职责都抛之脑后,决定某个类来实现某个职责之后,
在从这个类的角度出发,其他的职责都是不相关的,要做到高内聚,
低耦合为最佳状态。
开闭原则:
一个软件实体应当对扩展开放,对修改关闭。
也就是说在设计一个模块的时候,
应当使这个模块可以在不被修改的前提下被扩展,
并且实现在不修改源代码的情况下改变这个模块的行为。
里氏替换原则:
在软件中如果能够使用基类对象,那么一定能够使用其子类对象。
把基类都替换成他的子类,程序将不会产生任何错误和异常,反过来则不成立,
如果一个软件实体使用的是一个子类的话,那么它不一定能够使用基类。
里氏替换原则是实现开闭原则的重要方式之一,
由于使用基类对象的地方都可以使用子类对象,
因此在程序中尽量使用基类类型来对对象进行定义,
而在运行时在确定其子类类型,用子类对象来替换父类对象。
里氏替换原则_代码需要有单一职责,还要开闭,里氏替换又是什么鬼?相关推荐
- java 单一职责原则_设计模式之单一职责原则
对类来说,即一个类应用只负责一项职责,如类A负责两个不同的职责:职责1,职责2.当职责1需求变更时,可造成职责2执行错误,所以需要将类A的粒度分解为A1,A2. 降低类的复杂度,一个类只负责一项职责 ...
- java 七大设计原则之依赖倒置,里氏替换原则(文字代码相结合理解)
java 七大设计原则之依赖倒置,里氏替换原则,文字代码相结合理解 七大设计原则有哪些? 为什么要使用七大设计原则? 依赖倒置原则 里氏替换原则 喜欢就争取,得到就珍惜,错过就忘记.人生也许不尽完美, ...
- python里氏替换原则_设计模式六大原则之里氏替换原则
这是设计模式6 大原则系列的第二篇文章,附上前一篇文章地址:设计模式六大原则之单一职责原则.本文主要讲解设计模式的里氏替换原则. 肯定有不少人跟我刚看到这项原则的时候一样,对这个原则的名字充满疑惑.其 ...
- 里氏替换原则_春辉带你了解面相对象设计第二原则(里氏替换原则)
里氏替换原则的定义 里氏替换原则(Liskov Substitution Principle,LSP)由麻省理工学院计算机科学实验室的里斯科夫(Liskov)女士在 1987 年的"面向对象 ...
- 设计模式 - 六大设计原则之SRP(单一职责)
文章目录 概述 Case Bad Impl Better Impl 1. 定义接口 2. 职责分离-多种实现类 3. 单元测试 小结 概述 单一职责原则(Single Responsibility P ...
- 五大软件设计原则学习笔记1——单一职责原则
五大软件设计原则SOLID: 单一职责原则(Single responsibility principle,SRP) 开放封闭原则(Open–closed principle,OCP) Liskov ...
- 设计模式 之 设计的 六大原则(1)单一职责原则
由于这些原则性东西 属于概念东西,就不具体以代码描述了.以下是摘自网上和自己的一些理解 首先了解一些 面向对象的特性: 面向对象 有 三大基本特征:封装 ,继承, 多态. 封装: 也就是把客观事物封装 ...
- 软件设计原则(二)单一职责原则 -Single Responsibility Principle
SRP,Single Responsibility Principle: There should never be more than one reason for a class to chang ...
- 七种设计原则(二)单一职责原则
2019独角兽企业重金招聘Python工程师标准>>> 1.定义 单一职责原则概念::规定一个类应该只有一个发生变化的原因. There should never be more t ...
最新文章
- git 强制推送_Git 常用命令清单,掌握这些,轻松驾驭版本管理
- UVA12003 Array Transformer(数组分块)
- Spark创建RDD的四种方式(二):从外部存储(文件)创建 RDD代码示例
- 抛出java类型异常的方法_Java Streams:抛出异常的优雅方法
- KNN算法与Kd树(转载+代码详细解释)
- 普中科技开发板使用说明书_百度大脑加持,米尔科技FZ3深度学习计算卡评测
- add script param in pycharm
- linux从前往后读取文件夹图片名称,Linux目录和文件中的常用命令(三)
- windows下的Redis安装:
- JS CKEditor使用setData后绑定click事件
- 京东方班单片机和c语言,pic单片机c语言程序设计14.pdf
- 【计算机网络】网络层(六)—— IP组播与移动IP
- Google SketchUp Cookbook: (Chapter 5) Roofs: Constraints and Inferences
- vue---获取元素额外生成的data-v-xxx
- iPadmini能运行c语言吗,一个移动固态硬盘,可以给iPad Pro2020和iPad Mini用是什么体验?...
- ExifTool如何格式化日期和时间信息以进行书写
- JavaScript 为什么能活到现在?
- 豆瓣首席架构师洪强宁谈Python语言
- (R)机器学习--学习笔记--第四章节学习笔记
- 操作系统(一)——操作系统概述