在学习设计模式之前,我们要先了解设计模式的设计原则,经典的23种设计模式中或多或少地都在使用这些设计原则。设计模式都是站在设计原则的基础之上的。让我们开始设计原则的学习之旅吧。

1、单一职责原则

理解:如果一个类承担的责任过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。

总结:一个类只承担一个职责

2、开放封闭原则

理解:面对需求,对程序的改动是通过增加新代码进行的,而不是更改现有的代码。

总结:对软件实体可以扩展,但是不可修改。

3、里氏替换原则

理解:一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且它察觉不出父类对象和子类对象的区别。也就是说,在软件里面,把父类都替换成它的子类,程序的行为没有变化。

总结:子类型必须能够替换掉它们的父类型。

4、迪米特法则

理解:尽量减少对象之间的交互,从而减小类之间的耦合。在做系统设计时,不要让一个类依赖于太多其他的类,需尽量减小依赖关系,否则死都不知道怎么死的。

总结:一定要做到:低耦合、高内聚。

5、接口分离原则

理解:不要对外暴露没有实际意义的接口。也就是说,尽量保证接口的实用性。当需要对外暴露接口时,需要再三斟酌,若没必要对外提供就删了吧,因为一旦提供了就意味着,将来要多做一件事情,何苦给自己找事做呢。

总结:不要对外暴露没有实际意义的接口。

6、依赖倒转原则

理解:高层模块不应该依赖于底层模块,而应该依赖于抽象。抽象不应依赖于细节,细节应依赖于抽象。应该面向接口编程,不该面向实现类编程。面向实现类编程相当于就事论事,那是正向依赖;面向接口编程,相当于透过现象看本质,抓住事务的共性,那就是反向依赖,即依赖倒置。

总结:面向接口编程,提取出事务的本质和共性。

将六大原则的英文首字母拼在一起就是SOLID(稳定的),所以也称之为SOLID原则。

设计模式原则——SOLID相关推荐

  1. C#实践设计模式原则SOLID

    理论跟实践的关系,说远不远,说近不近.能不能把理论用到实践上,还真不好说.   通常讲到设计模式,一个最通用的原则是SOLID: S - Single Responsibility Principle ...

  2. 设计模式原则SOLID

    一.单一职责原则(SRP) 定义:不要存在多于一个导致类变更的原因.通俗的说,即一个类只负责一项职责. 问题由来:类T负责两个不同的职责:职责P1,职责P2.当由于职责P1需求发生改变而需要修改类T时 ...

  3. 设计模式之SOLID原则再回首

        本科阶段学过设计模式,那时对设计模式的五大原则--SOLID原则的概念与理解还是比较模糊,此时过去了2年时间,在学习<高级软件工程>课程中老师又提到了设计模式,课程中还详细讨论了五 ...

  4. 【转】设计模式六大原则——SOLID

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

  5. 实践GoF的23的设计模式:SOLID原则(下)

    本文分享自华为云社区<实践GoF的23的设计模式:SOLID原则(下)>,作者: 雷电与骤雨. 在<实践GoF的23种设计模式:SOLID原则(上)>中,主要讲了SOLID原则 ...

  6. 实践GoF的23种设计模式:SOLID原则(上)

    本文分享自华为云社区<实践GoF的23种设计模式:SOLID原则(上)>,作者:元闰子. 前言 从1995年GoF提出23种设计模式到现在,25年过去了,设计模式依旧是软件领域的热门话题. ...

  7. 软件设计模式 SOLID 原则 - SOLID Principles

    软件设计模式 SOLID 原则 - SOLID Principles SOLID is a mnemonic for five design principles intended to make s ...

  8. 设计模式六大原则——SOLID

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

  9. java solid设计原则_设计模式之SOLID原则

    什么是SOLID原则 SOLID = SRP(职责单一原则) + OCP(对扩展开发,修改关闭原则)+ LSP(里氏替换原则)+ ISP(接口隔离原则)+ DIP(依赖反转原则) SRP: Singl ...

最新文章

  1. FlexboxLayout使用(Google官方实现流式布局控件)
  2. Django模板系统
  3. python3.7界面设计_基于selenium+Python3.7+yaml+Robot Framework的UI自动化测试框架
  4. OpenGL程序管道,可分离程序和着色器子例程的基本用法
  5. 第10章-定位、层级关系
  6. 房地产建筑行业HTML5模板
  7. HTTP请求和数据安全
  8. Python接口自动化-接口基础(二)
  9. Linux Kernel 多个本地安全绕过漏洞
  10. .p7b证书转成iis使用的.pfx证书
  11. 使用python的netCDF4库读取.nc文件 和 创建.nc文件
  12. 计算机电源接口图,电脑电源接口定义图解
  13. python博弈树_博弈方法
  14. 虚拟串口VSPD和XCOM的下载+安装+使用
  15. 应用宝 android 平板,应用宝HD2.0个性化推荐最优安卓平板软件
  16. 青岛小学 初中有计算机编程比赛,青岛市电脑制作活动 程序设计竞赛 一等奖...
  17. timer cancel_Java Timer cancel()方法与示例
  18. 计算机管相关论文,计算机管理论文
  19. Js 方法函数记录笔记
  20. the mesh is compo…

热门文章

  1. linux 查看网络流量来源_linux中查看网卡流量六种方法
  2. 内存缓存(in-memory cache)
  3. https是什么_http与https的区别
  4. Spring Boot 使用 HikariCP 连接池配置详解
  5. 【一级讲解】不可思议唤来不可思议β——数学排列组合
  6. jQuery的9种方式实现下拉列表
  7. 数字化波形声音的wav文件浅析
  8. Revit二次开发入门相关安装和配置
  9. c语言作业素数探求实验题,c语言课程设计-素数探求.doc
  10. <塞梅普雷斯 如是说> 第二部 0.序