设计原则概述

设计模式中主要有六大设计原则,简称为SOLID ,是由于各个原则的首字母简称合并的来(两个L算一个,solid 稳定的),六大设计原则分别如下:

1、单一职责原则(Single Responsibitity Principle)

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

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

4、接口分离原则(Interface Segregation Principle)

5、依赖倒置原则(Dependence Inversion Principle)

6、迪米特法则(Law Of Demter)

软件开发中我们要基于这六个原则,设计建立稳定、灵活、健壮的程序.

一、单一职责原则

一个类只负责完成一个职责或者功能

二、开闭原则

对扩展开放,对修改关闭

在写代码的时候后,我们要多花点时间往前多思考一下,这段代码未来可能有哪些需求变 更、如何设计代码结构,事先留好扩展点,以便在未来需求变更的时候,不需要改动代码整 体结构、做到最小代码改动的情况下,新的代码能够很灵活地插入到扩展点上,做到“对扩 展开放、对修改关闭”。

三、里氏替换原则

子类对象能够替换程序中父类对象出现的任何地方,并且保证原来程序的逻辑行为不变及正确性不被破坏。

四、接口隔离原则

一个类对另一个类的依赖应该建立在最小的接口上

接口隔离原则与单一职责原则的区别

接口隔离原则和单一职责都是为了提高类的内聚性、降低它们之间的耦合性,体现了封装的思想,但两者是不同的:

  • 单一职责原则注重的是职责,而接口隔离原则注重的是对接口依赖的隔离。

  • 单一职责原则主要是约束类,它针对的是程序中的实现和细节;接口隔离原则主要约束接口,主要针对抽象和程序整体框架的构建。

五、依赖倒置原则

在设计代码架构时,高层模块不应该依赖于底层模块,二者都应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象。

六、迪米特法则

不该有直接依赖关系的类之间,不要有依赖;有依赖关系的类之间,尽量只依赖必要的接口。

如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该调用。其目的是降低类之间的耦合度,提高模块的相对独立性。

设计模式总结

这里我们只需要重点关注三个常用的原则即可:

1 ) 单一职责原则

单一职责原则是类职责划分的重要参考依据,是保证代码”高内聚“的有效手段,是我们在进行面向对象设计时的主要指导原则。
单一职责原则的难点在于,对代码职责是否足够单一的判定。这要根据具体的场景来具体分析。同一个类的设计,在不同的场景下,对职责是否单一的判定,可能是不同的。

2 ) 开闭原则

开闭原则是保证代码可扩展性的重要指导原则,是对代码扩展性的具体解读。很多设计模式诞生的初衷都是为了提高代码的扩展性,都是以满足开闭原则为设计目的的。
开闭原则是所有设计模式的最核心目标,也是最难实现的目标,但是所有的软件设计模式都应该以开闭原则当作标准,才能使软件更加的稳定和健壮。

3 ) 依赖倒置原则

依赖倒置原则主要用来指导框架层面的设计。高层模块不依赖低层模块,它们共同依赖同一个抽象。
> 依赖倒置原则其实也是实现开闭原则的重要途径之一,它降低了类之间的耦合,提高了系统的稳定性和可维护性,同时这样的代码一般更易读,且便于传承。

六大设计原则 (SOLID)相关推荐

  1. 六大设计原则SOLID

    六大设计原则SOLID 一.SOLID 设计模式的六大原则 二.单一职责原则 (Single Responsibility Principle) 1. 单一职责原则定义 2. 问题由来 3. 解决方案 ...

  2. 六大设计原则(SOLID)

    一.SOLID 设计模式的六大原则有: Single Responsibility Principle:单一职责原则 Open Closed Principle:开闭原则 Liskov Substit ...

  3. 【六大设计原则-SOLID】

    SOLID简介: 历史:由Robert C·Martin汇总并推广 目标: 使软件更容易被改动 是软件更容易被理解 构建可以在多个软件系统中复用的组件 组成: 名称 简写 含义 单一职责原则 SRP ...

  4. 设计模式必备知识点----六大设计原则

    六大设计原则 一,开闭原则 开闭原则的定义 什么是开闭原则 开闭原则的作用 开闭原则的优点 二,单一职责原则 单一职责定义 单一职责的作用 单一职责的优点 单一职责的违背原则 三,依赖倒置原则 依赖倒 ...

  5. IOS设计模式的六大设计原则之开放-关闭原则(OCP,Open-Close Principle)

    定义 一个软件实体(如类.模块.函数)应当对扩展开放,对修改关闭. 定义解读 在项目开发的时候,都不能指望需求是确定不变化的,大部分情况下,需求是变化的.那么如何应对需求变化的情况?这就是开放-关闭原 ...

  6. [转] 设计模式的六大设计原则

    转载说明: 感谢原作者吕震宇老师的分享. 原文参考链接:https://www.cnblogs.com/zhenyulu/category/6930.html? 本次转载只用于个人学习使用,并不涉及商 ...

  7. 【0718作业】收集和整理面向对象的六大设计原则

    面向对象的六大设计原则 (1)单一职责原则--SRP (2)开闭原则--OCP (3)里式替换原则--LSP (4)依赖倒置原则--DIP (5)接口隔离原则--ISP (6)迪米特原则--LOD - ...

  8. 设计模式三大类及六大设计原则

    设计模式分为三大类: 创建型模式,共五种: 单例模式 工厂方法模式 抽象工厂模式 建造者模式 原型模式 结构型模式,共七种: 适配器模式 装饰模式 代理模式 外观模式 桥接模式 组合模式 享元模式 行 ...

  9. 引用防删——JAVA设计模式总结之六大设计原则

    JAVA设计模式总结之六大设计原则 从今年的七月份开始学习设计模式到9月底,设计模式全部学完了,在学习期间,总共过了两篇:第一篇看完设计模式后,感觉只是脑子里面有印象但无法言语.于是决定在看一篇,到9 ...

最新文章

  1. Power Designer逆向工程导入Oracle表,转为模型加注释
  2. Ubuntu安装rabbitMQ及单机版rabbitMQ集群配置
  3. 使用dotnet-dump 查找 .net core 3.0 占用CPU 100%的原因
  4. 历届冬奥会中国金牌得主一览
  5. Scala @BeanProperty注解生成getter/setter
  6. php文件名函数,php 获取文件名basename()函数的用法总结
  7. MySQL的安装与配置--windows下安装
  8. KVM安装Win系列虚拟机学习笔记
  9. Codeforces Round #381 (Div. 1) A. Alyona and mex 构造
  10. linux vnc 改端口号,RHEL6下配置vncserver服务(包括修改vnc端口)
  11. sql-bench mysql_MySQL性能测试(一)——RHEL 7.1, MySQL 5.6.25, sql-bench
  12. 无为职业学校计算机班,致盐亭职中2000级计算机三班全体同学的一封信
  13. 术中导航_密码术中的计数器(CTR)模式
  14. IP数据库的生成与使用
  15. Git 命令 clone、add、status、commit、push、init 使用介绍.
  16. java面试题及答案2020
  17. 三极管开关电路_简析三极管开关电路设计
  18. 电商产品设计:拆单规则和业务场景详解
  19. oracle19c安装向导空白页,安装Oracle19c提示Warning问题解决
  20. python添加水印的几种方式

热门文章

  1. 常见Cppcheck检查问题总结(静态检查错误)
  2. 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler...
  3. flutter tabBar 选项卡自定义指示器
  4. 正信光电新三板挂牌上市
  5. excel之数字转字符串,取消科学计数法
  6. php slug,php 中的var
  7. OpenJWeb(1.6) Java Web应用快速开发平台技术白皮书
  8. kafka源码愫读(5)、ReplicaManager模块源码分析
  9. .设计一个Student类,该类中包括学生的姓名和成绩。创建Student类的5个对象,如下所示: 姓名 成绩 刘德华 85 张学友 100 刘杰 65 章子怡 58 周迅 76 将以上5个对象
  10. 怀院计科院1901班NICE组限时答题程序