设计模式原则——SOLID
在学习设计模式之前,我们要先了解设计模式的设计原则,经典的23种设计模式中或多或少地都在使用这些设计原则。设计模式都是站在设计原则的基础之上的。让我们开始设计原则的学习之旅吧。
1、单一职责原则
理解:如果一个类承担的责任过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。
总结:一个类只承担一个职责
2、开放封闭原则
理解:面对需求,对程序的改动是通过增加新代码进行的,而不是更改现有的代码。
总结:对软件实体可以扩展,但是不可修改。
3、里氏替换原则
理解:一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且它察觉不出父类对象和子类对象的区别。也就是说,在软件里面,把父类都替换成它的子类,程序的行为没有变化。
总结:子类型必须能够替换掉它们的父类型。
4、迪米特法则
理解:尽量减少对象之间的交互,从而减小类之间的耦合。在做系统设计时,不要让一个类依赖于太多其他的类,需尽量减小依赖关系,否则死都不知道怎么死的。
总结:一定要做到:低耦合、高内聚。
5、接口分离原则
理解:不要对外暴露没有实际意义的接口。也就是说,尽量保证接口的实用性。当需要对外暴露接口时,需要再三斟酌,若没必要对外提供就删了吧,因为一旦提供了就意味着,将来要多做一件事情,何苦给自己找事做呢。
总结:不要对外暴露没有实际意义的接口。
6、依赖倒转原则
理解:高层模块不应该依赖于底层模块,而应该依赖于抽象。抽象不应依赖于细节,细节应依赖于抽象。应该面向接口编程,不该面向实现类编程。面向实现类编程相当于就事论事,那是正向依赖;面向接口编程,相当于透过现象看本质,抓住事务的共性,那就是反向依赖,即依赖倒置。
总结:面向接口编程,提取出事务的本质和共性。
将六大原则的英文首字母拼在一起就是SOLID(稳定的),所以也称之为SOLID原则。
设计模式原则——SOLID相关推荐
- C#实践设计模式原则SOLID
理论跟实践的关系,说远不远,说近不近.能不能把理论用到实践上,还真不好说. 通常讲到设计模式,一个最通用的原则是SOLID: S - Single Responsibility Principle ...
- 设计模式原则SOLID
一.单一职责原则(SRP) 定义:不要存在多于一个导致类变更的原因.通俗的说,即一个类只负责一项职责. 问题由来:类T负责两个不同的职责:职责P1,职责P2.当由于职责P1需求发生改变而需要修改类T时 ...
- 设计模式之SOLID原则再回首
本科阶段学过设计模式,那时对设计模式的五大原则--SOLID原则的概念与理解还是比较模糊,此时过去了2年时间,在学习<高级软件工程>课程中老师又提到了设计模式,课程中还详细讨论了五 ...
- 【转】设计模式六大原则——SOLID
SOLID设计模式的六大原则有: Single Responsibility Principle:单一职责原则 Open Closed Principle:开闭原则 Liskov Substituti ...
- 实践GoF的23的设计模式:SOLID原则(下)
本文分享自华为云社区<实践GoF的23的设计模式:SOLID原则(下)>,作者: 雷电与骤雨. 在<实践GoF的23种设计模式:SOLID原则(上)>中,主要讲了SOLID原则 ...
- 实践GoF的23种设计模式:SOLID原则(上)
本文分享自华为云社区<实践GoF的23种设计模式:SOLID原则(上)>,作者:元闰子. 前言 从1995年GoF提出23种设计模式到现在,25年过去了,设计模式依旧是软件领域的热门话题. ...
- 软件设计模式 SOLID 原则 - SOLID Principles
软件设计模式 SOLID 原则 - SOLID Principles SOLID is a mnemonic for five design principles intended to make s ...
- 设计模式六大原则——SOLID
SOLID 设计模式的六大原则有: Single Responsibility Principle:单一职责原则 Open Closed Principle:开闭原则 Liskov Substitut ...
- java solid设计原则_设计模式之SOLID原则
什么是SOLID原则 SOLID = SRP(职责单一原则) + OCP(对扩展开发,修改关闭原则)+ LSP(里氏替换原则)+ ISP(接口隔离原则)+ DIP(依赖反转原则) SRP: Singl ...
最新文章
- FlexboxLayout使用(Google官方实现流式布局控件)
- Django模板系统
- python3.7界面设计_基于selenium+Python3.7+yaml+Robot Framework的UI自动化测试框架
- OpenGL程序管道,可分离程序和着色器子例程的基本用法
- 第10章-定位、层级关系
- 房地产建筑行业HTML5模板
- HTTP请求和数据安全
- Python接口自动化-接口基础(二)
- Linux Kernel 多个本地安全绕过漏洞
- .p7b证书转成iis使用的.pfx证书
- 使用python的netCDF4库读取.nc文件 和 创建.nc文件
- 计算机电源接口图,电脑电源接口定义图解
- python博弈树_博弈方法
- 虚拟串口VSPD和XCOM的下载+安装+使用
- 应用宝 android 平板,应用宝HD2.0个性化推荐最优安卓平板软件
- 青岛小学 初中有计算机编程比赛,青岛市电脑制作活动 程序设计竞赛 一等奖...
- timer cancel_Java Timer cancel()方法与示例
- 计算机管相关论文,计算机管理论文
- Js 方法函数记录笔记
- the mesh is compo…