目录

单一职责原则:

开闭原则:

里氏替换原则:

单一职责原则:

每一个系统中的功能都表示一个职责,这些职责可以映射到模块(类)中,

且尽可能的保证这些类中没有功能上的重复,设计中每次应只关注一个职责,

但也不要把其他职责都抛之脑后,决定某个类来实现某个职责之后,

在从这个类的角度出发,其他的职责都是不相关的,要做到高内聚,

低耦合为最佳状态。

开闭原则:

一个软件实体应当对扩展开放,对修改关闭。

也就是说在设计一个模块的时候,

应当使这个模块可以在不被修改的前提下被扩展,

并且实现在不修改源代码的情况下改变这个模块的行为。

里氏替换原则:

在软件中如果能够使用基类对象,那么一定能够使用其子类对象。

把基类都替换成他的子类,程序将不会产生任何错误和异常,反过来则不成立,

如果一个软件实体使用的是一个子类的话,那么它不一定能够使用基类。

里氏替换原则是实现开闭原则的重要方式之一,

由于使用基类对象的地方都可以使用子类对象,

因此在程序中尽量使用基类类型来对对象进行定义,

而在运行时在确定其子类类型,用子类对象来替换父类对象。

里氏替换原则_代码需要有单一职责,还要开闭,里氏替换又是什么鬼?相关推荐

  1. java 单一职责原则_设计模式之单一职责原则

    对类来说,即一个类应用只负责一项职责,如类A负责两个不同的职责:职责1,职责2.当职责1需求变更时,可造成职责2执行错误,所以需要将类A的粒度分解为A1,A2. 降低类的复杂度,一个类只负责一项职责 ...

  2. java 七大设计原则之依赖倒置,里氏替换原则(文字代码相结合理解)

    java 七大设计原则之依赖倒置,里氏替换原则,文字代码相结合理解 七大设计原则有哪些? 为什么要使用七大设计原则? 依赖倒置原则 里氏替换原则 喜欢就争取,得到就珍惜,错过就忘记.人生也许不尽完美, ...

  3. python里氏替换原则_设计模式六大原则之里氏替换原则

    这是设计模式6 大原则系列的第二篇文章,附上前一篇文章地址:设计模式六大原则之单一职责原则.本文主要讲解设计模式的里氏替换原则. 肯定有不少人跟我刚看到这项原则的时候一样,对这个原则的名字充满疑惑.其 ...

  4. 里氏替换原则_春辉带你了解面相对象设计第二原则(里氏替换原则)

    里氏替换原则的定义 里氏替换原则(Liskov Substitution Principle,LSP)由麻省理工学院计算机科学实验室的里斯科夫(Liskov)女士在 1987 年的"面向对象 ...

  5. 设计模式 - 六大设计原则之SRP(单一职责)

    文章目录 概述 Case Bad Impl Better Impl 1. 定义接口 2. 职责分离-多种实现类 3. 单元测试 小结 概述 单一职责原则(Single Responsibility P ...

  6. 五大软件设计原则学习笔记1——单一职责原则

    五大软件设计原则SOLID: 单一职责原则(Single responsibility principle,SRP) 开放封闭原则(Open–closed principle,OCP) Liskov ...

  7. 设计模式 之 设计的 六大原则(1)单一职责原则

    由于这些原则性东西 属于概念东西,就不具体以代码描述了.以下是摘自网上和自己的一些理解 首先了解一些 面向对象的特性: 面向对象 有 三大基本特征:封装 ,继承, 多态. 封装: 也就是把客观事物封装 ...

  8. 软件设计原则(二)单一职责原则 -Single Responsibility Principle

    SRP,Single Responsibility Principle: There should never be more than one reason for a class to chang ...

  9. 七种设计原则(二)单一职责原则

    2019独角兽企业重金招聘Python工程师标准>>> 1.定义 单一职责原则概念::规定一个类应该只有一个发生变化的原因. There should never be more t ...

最新文章

  1. git 强制推送_Git 常用命令清单,掌握这些,轻松驾驭版本管理
  2. UVA12003 Array Transformer(数组分块)
  3. Spark创建RDD的四种方式(二):从外部存储(文件)创建 RDD代码示例
  4. 抛出java类型异常的方法_Java Streams:抛出异常的优雅方法
  5. KNN算法与Kd树(转载+代码详细解释)
  6. 普中科技开发板使用说明书_百度大脑加持,米尔科技FZ3深度学习计算卡评测
  7. add script param in pycharm
  8. linux从前往后读取文件夹图片名称,Linux目录和文件中的常用命令(三)
  9. windows下的Redis安装:
  10. JS CKEditor使用setData后绑定click事件
  11. 京东方班单片机和c语言,pic单片机c语言程序设计14.pdf
  12. 【计算机网络】网络层(六)—— IP组播与移动IP
  13. Google SketchUp Cookbook: (Chapter 5) Roofs: Constraints and Inferences
  14. vue---获取元素额外生成的data-v-xxx
  15. iPadmini能运行c语言吗,一个移动固态硬盘,可以给iPad Pro2020和iPad Mini用是什么体验?...
  16. ExifTool如何格式化日期和时间信息以进行书写
  17. JavaScript 为什么能活到现在?
  18. 豆瓣首席架构师洪强宁谈Python语言
  19. (R)机器学习--学习笔记--第四章节学习笔记
  20. 操作系统(一)——操作系统概述

热门文章

  1. 在2017年从Maven工件生成P2存储库
  2. activemq 持久订阅_ActiveMQ群集,持久订阅者和虚拟主题可助您一臂之力
  3. Stackoverflow的见解:投票最多的是Spring 4问题
  4. java中缓冲区和缓存_Java中的Google协议缓冲区
  5. JDK 7和JDK 8中大行读取速度较慢的原因
  6. Java EE 7批处理和魔兽世界–第1部分
  7. Hawtio和Apache JClouds
  8. Spring MVC:资源
  9. JAXB和java.util.Map
  10. 带有Jersey和Spring的RESTful Web应用程序