目录

文章目录

  • 目录
  • 1、开放/封闭原则(Open Close Principle)
  • 2、依赖反转原则(Dependence Inversion Principle)
  • 3、接口隔离原则(Interface Segregation Principle)
  • 4、单一职责原则
  • 5、合成复用原则(Composite Reuse Principle)
  • 6、里氏替换原则(Liskov Substitution Principle)
  • 7、迪米特法则(Demeter Principle)

1、开放/封闭原则(Open Close Principle)

开放/封闭原则,类和对象及其方法对于扩展来说,是开放的;对于修改来说,是要封闭的。

  1. 现有的类不会被修改,因此退化的可能性较小。
  2. 有助于保持以前代码的向后兼容性。

2、依赖反转原则(Dependence Inversion Principle)

依赖反转原则,高层级的模块不应该依赖于低层级的模块,它们应该依赖于抽象(接口)。任何两个模块都不应以紧密的方式相互依赖。

  1. 消弱了模块间的紧耦合,因此消除了系统中的复杂性。
  2. 由于依赖模块之间有一个明确的抽象层(由接口、或钩子提供),因此便于通过更好的方式处理模块之间的依赖关系。

3、接口隔离原则(Interface Segregation Principle)

接口隔离原则,客户端不应该依赖于它们不需要使用的接口。

  1. 它强制开发人员编写瘦身型接口,并使方法与接口紧密无关。
  2. 防止向接口中随意填写方法。

4、单一职责原则

单一职责原则,类的职责单一,引起类变化的原因单一。

  1. 每当一个功能发生变化时,除了特定类需要改变外,其他类无需变动。
  2. 如果一个类有多种功能,那么依赖它的类必定会由于多种原因而经历多次修改,这是应该避免的。

5、合成复用原则(Composite Reuse Principle)

尽量使用合成/聚合(组合)的方式,而不是使用继承。

继承实际上破坏了类的封装性,超类的方法可能会被子类修改。

6、里氏替换原则(Liskov Substitution Principle)

只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。

7、迪米特法则(Demeter Principle)

一个实体应当尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立。

Python 进阶 — 面向对象设计原则相关推荐

  1. 依赖倒置原则——面向对象设计原则

    前两节我们详细介绍了面向对象设计原则中的开闭原则和里氏替换原则,在本节中我们来介绍依赖倒置原则. 依赖倒置原则的定义 依赖倒置原则(Dependence Inversion Principle,DIP ...

  2. 面向对象设计原则_面向对象的设计原则

    面向对象设计原则 Programming is fun until you have to incorporate a new requirement that changes the whole d ...

  3. 万字长文,精讲面向对象设计原则,一起练内功

    本文摘Robert C Martion <架构整洁之道> 在我们追逐互联网高并发技术时,应该提前打好基础.面向对象设计原则是成为架构的必由之路,通读此文,反复咀嚼,定会受益无穷. 通常来说 ...

  4. 7.12 其他面向对象设计原则3: 依赖倒置原则DIP

    其他面向对象设计原则3: 依赖倒置原则DIP  The Dependency Inversion Principle 7.1 依赖倒置原则DIP The Dependency Inversion P ...

  5. uml图中的各种箭头_设计模式学习笔记(二):UML与面向对象设计原则

    1 UML 1.1 UML UML(Unified Modeling Language)是统一建模语言,1997年11月UML1.1版本提交给OMG并正式通过,成为建模语言的个那个也标准.2003年6 ...

  6. 技术图文:01 面向对象设计原则

    01 面向对象设计原则 知识结构: 一碟开胃的小菜 小菜今年计算机专业大四了,学了不少软件开发方面的东西,也学着编了些小程序,踌躇满志,一心要找一个好单位.当投递了无数简历后,终于收到了一个单位的面试 ...

  7. 02面向对象设计原则

    技术交流QQ群:1027579432,欢迎你的加入! 1.为什么需要面向对象设计 变化是复用的天敌!面向对象设计最大的优势在于抵御变化! 2.重新认识面向对象 理解隔离变化 从宏观层面上来看,面向对象 ...

  8. 程序员必备的七大面向对象设计原则(三)

    五.接口隔离原则 1. 定义 i.  客户端不应该依赖那些它不需要的接口. ii.  一旦一个接口太大,则需要将它分割成一些更细小的接口,使用该接口的客户端仅需知道与之相关的方法即可. 2.分析 i. ...

  9. C++面向对象设计原则详解

    概述 C++面向对象设计原则主要包括以下几点: 依赖倒置原则 开放封闭原则 单一职责原则 里氏替换原则 接口隔离原则 封装变化点原则 面向接口编程原则 优先使用对象组合,而不是类继承 接下来详细的分析 ...

最新文章

  1. 举例讲解Linux系统下Python调用系统Shell的方法
  2. scikit-image基本用法(上)
  3. python教程循环语句,Python基础教程之循环语句(for、while和嵌套循环)
  4. MySQL主从复制故障解决
  5. “约见”面试官系列之常见面试题之第六十一篇之IE和DOM事件流(建议收藏)
  6. 【JSOI2007】【BZOJ1029】【codevs2913】建筑抢修,贪心与堆
  7. IP地址转换函数——inet_pton inet_ntop inet_aton inet_addr inet_ntoa
  8. 潭州Java中级班(day_13)-异常概述
  9. P4055 [JSOI2009]游戏
  10. 基于javaweb的校园自行车租赁管理系统(java+jsp+javascript+servlet+mysql)
  11. 顺利通过2020年下工信部的系统架构设计师考试,在此感悟一下
  12. Presto查询出现error executing query异常
  13. 智能制造数据分析综合应用方案
  14. mysql 设置平均值小数位数_mysql小数位数设置
  15. swift 判断是否设置了代理
  16. 飞速创软 | 带你深入了解Iass、Pass、Sass三种云服务的区别
  17. layui 数据表格下拉框_LayUi数据表格中嵌套下拉框
  18. 用 Python 实现英文单词纠错功能!这样就不担心不会辅导孩子了!
  19. 语音识别之语音激活(VAD)检测(一)
  20. EasyExcel 中文文档

热门文章

  1. Metasploit中aggregator插件无法使用
  2. Wireshark网络分析实例集锦第2章设置Wireshark视图
  3. wegame饥荒一直连接中_23万人捧场热血传奇怀旧版,WeGame拯救计划,前景如何?...
  4. asiox 多个baseurl_vue添加axios,并且指定baseurl
  5. JStorm与Storm源码分析(二)--任务分配,assignment
  6. 学java时的一些笔记(2)
  7. 一家两位Fellow大满贯!北大谢涛当选ACM Fellow,与胞兄谢源完成会师
  8. 树莓派获4500万美元融资,估值已达5亿美元,去年创下了710万台销量纪录
  9. 冬奥会测试赛,助理裁判竟然是个AI!
  10. 国产岚图入局高端智能电动车,对标特斯拉,放话一年内量产