转载自https://www.cnblogs.com/HigginCui/p/6195318.html

【六大原则总览】

1.单一职责原则

2.里氏替换原则

3.依赖导致原则

4.接口隔离原则

5.迪米特法则

6.开闭原则

【原则一:单一职责原则】

  英文全称:Single Responsibility Principle,简称SRP。

  要求一个接口或类只有一个原因引起变化,就是一个接口或类只有一个原则,它就负责一件事情。

[ 好处 ]

* 类的复杂性降低,实现什么职责都有清晰明确的定义;

* 可读性提高,复杂性降低。

* 可维护性提高。

* 变更引起的风险降低。如果接口的定义职责做的很好,一个接口修改只对相应的实现类有影响,对其它接口没有影响,这对系统的扩展性和可维护性非常大的帮助。

【原则二:里氏替换原则】

首先分析一下继承的优点缺点;

[ 继承的优点 ]

* 代码共享,减少创建类的工作量,每个子类都拥有父类的方法和属性。

* 提高了代码的重用性。

* 子类可以形似父类,但又异于父类。

* 提高代码的扩展性,许多开源框架的扩展接口都是通过继承父类来完成的。

* 提高产品或项目的开放性。

[ 继承的缺点 ]

* 继承是侵入性的。只要继承,子类就必须拥有父类的所有属性和方法。

* 降低代码的灵活性,子类必须拥有父类的属性和方法,给子类添加了约束。

* 增强了代码的耦合性,当父类的常量、变量或方法修改时,就要考虑子类的修改。

[ 里氏替换原则的定义 ]

只要父类能出现的地方,子类就可以出现,而且替换给子类就不会出现任何的错误或异常,使用者不需要知道是子类还是父类,但是反过来是不可以的,有子类出现的地方,父类未必就可以。

[ 里氏替换原则的四层含义 ]

* 子类必须实现父类的方法。

* 子类必须有自己的个性

* 覆盖或实现或父类的方法时输入参数可以被放大。

* 覆写或实现父类的方法时输出结果可以被缩小。

【原则三:依赖倒置原则】

[ 在java语言中的表现 ]

* 模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系通过接口或抽象类产生。

* 接口或抽象类不依赖其实现类。

* 实现类依赖接口或抽象类。

【原则四:接口隔离原则】

接口隔离原则要求接口中的方法尽量少。(单一职责要求类和接口职责单一,注重的是职责,是业务逻辑上的划分)

【原则五:迪米特法则】

也称为最少知识原则,一个对象应该对其它对象由最少的了解,即一个类应该对自己需要耦合或调用的类知道的最少。

【原则六:开闭原则】

软件实体,应该对扩展开放,对修改关闭,含义就是一个原件实体应该通过扩展来实现变化,而不是通过修改已有的代码来实现变化。

00_设计模式6大原则相关推荐

  1. 设计模式6大原则-开闭原则

    设计模式6大原则-开闭原则 定义:一个软件实体如类.模块和函数应该对扩展开放,对修改关闭. 开闭原则理念就是当需求改变时,希望在不改变原有代码的前提下,通过扩展模块.函数来满足新需求. 开闭原则是其他 ...

  2. 设计模式“6”大原则!

    面向对象设计原则 概述 对于面向对象软件系统的设计而言,在支持可维护性的同时,提高系统的可复用性是一个至关重要的问题,如何同时提高一个软件系统的可维护性和可复用性是面向对象设计需要解决的核心问题之一. ...

  3. 设计模式--6大原则--开闭原则

    开闭原则(Open Closed Principle) 开闭原则的核心是:对扩展开放,对改动关闭 白话意思就是我们改变一个软件时(比方扩展其它功能).应该通过扩展的方式来达到软件的改变,而不应爱改动原 ...

  4. 设计模式6大原则简述

    0.前言 这一段时间一直在看设计模式,里面分多次提到几个设计原则,看了几次发现记不清楚,还是得自己动手总结一下吧,把书上的理论先理解写下来再说喽. 1.单一职责原则 定义:不要存在多于一个导致类变更的 ...

  5. 设计模式--6大原则--依赖倒置原则

    依赖倒置原则(Dependence Inversion Principle),简称DIP 定义 High level modules should depend upon low level modu ...

  6. 设计模式6大原则(5)-得墨忒耳

    迪米特法则(Law of Demeter)又叫作最少知识原则(Least Knowledge Principle 简写LKP),就是说一个对象应当对其它对象有尽可能少的了解,不和陌生人说话.英文简写为 ...

  7. 设计模式--6大原则--单一职责原则

    2019独角兽企业重金招聘Python工程师标准>>> 单一职责原则(Single Responsibility Principle),简称SRP. 定义: There should ...

  8. 设计模式7大原则——接口隔离原则解析(含代码示例)

    一.定义 客户端不应该依赖它不需要的接口,即 一个类对另一个类的依赖应该建立在最小的接口 上 . 通俗的来说就是,不要在一个接口里面放很多的方法,这样会显得这个类很臃肿不堪.接口应该尽量细化,一个接口 ...

  9. 设计模式--6大原则--迪米特法则

    迪米特法则(Law of emeter) 定义:一个对象应该对其他对象了解最少 迪米特法则的核心观念就是类间解耦,弱耦合,只有弱耦合了以后,类的复用性才可以提高. 形象一点的比喻类似于:监狱内的犯人是 ...

最新文章

  1. Java--Dom解析XML文件
  2. 无法从“std::_Binder std::_Unforced,SOCKET ,LPSOCKADDR,unsigned int ”转换为“int”
  3. C++容器适配器之priority_queue
  4. centos 设置双网卡,双网关
  5. c++ 类和类的定义
  6. javascript Control flow(控制语句)
  7. div+css,表单和表格 学习笔记
  8. 2019全球最具颠覆性的17大公司
  9. wait放弃对象锁_Java线程:notify()和wait()示例
  10. 系泊系统 matlab 代码,系泊系统的设计
  11. 黄色量能通达信指标公式!没有未来函数,不加密的副图指标!
  12. GAMP读取精密星历存在一个小BUG
  13. Excel 快速填充序号
  14. ubuntu搜狗拼音输入法选词框乱码
  15. JavaScript页面刷新的所有方法
  16. 前端一倍图、二倍图、多倍图
  17. oracle11g ora12514,Oracle 11g ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务...
  18. 【电脑办公软件】万彩办公大师教程丨TextDiff文本比较工具
  19. java web统计报表_用Java在Web页面上输出统计图 统计报表
  20. android 判断是否是数字,是否在数字范围内,是否是字母,下一个字母,小写转大写,大写转小写;

热门文章

  1. VC6.0蕉HOOK_timeGetTime 达到变速效果
  2. 将可执行文件以资源的方式加入到另一个可执行文件并释放
  3. Python实现遍历目录与子目录,并找到以.txt结尾的文件
  4. IO中的阻塞、非阻塞、同步、异步概念分析详解
  5. 音视频技术开发周刊 | 169
  6. 使用iPhone相机和OpenCV来完成3D重建(第三部分)
  7. 音视频技术开发周刊 | 136
  8. 英特尔SVT-AV1 0.8 AV1视频编码基准发布
  9. 从云计算到低延时,传统编码器与创新技术双剑合璧严把成本质量关
  10. LiveVideoStack线上交流分享 (十七) —— AV1编码器优化与实用落地演进之路