设计原则(一):SOLID 概览

简介: 设计原则(一):SOLID 概览

背景介绍


这是我的《架构整洁之道》系列的第五篇,从这一篇开始,我们将要一起学习设计原则~

《架构整洁之道》系列:



设计原则


通常来说,要想构建一个好的软件系统,应该从写整洁的代码开始做起。毕竟,如果建筑所使用的砖头质 量不佳,那么架构所能起到的作用也会很有限。反之亦然,如果建筑的架构设计不佳,那么其所用的砖头质 量再好也没有用。这就是 SOLID 设计原则所要解决的问题。


一般情况下,我们为软件构建中层结构的主要目标如下:


  • 使软件可容忍被改动。
  • 使软件更容易被理解。
  • 构建可在多个软件系统中复用的组件。


在这里之所以会使用“中层”这个词,是因为这些设计原则主要适用于那些进行模块级编程的程序员。SOLID 原则应该直接紧贴于具体的代码逻辑之上,这些原则是用来帮助我们定义软件架构中的组件和模块的。


  • SRP:单一职责原则

每个软件模块都有且只有一个需要被改变的理由。

  • OCP: 开闭原则

如果软件系统想要更容易被改变,那么其设计就必须允许新增代码来修改系统行为,而非只能靠修改原来的代码。

  • LSP: 里氏替换原则

这项原则的意思是如果想用可替换的组件来构建软件系统,那么这些组件就必须遵守同一个约定,以便让这些组件可以相互替换。

  • ISP: 接口隔离原则

软件设计师应该在设计中避免不必要的依赖

  • DIP : 依赖反转原则

高层策略性的代码不应该依赖实现底层细节的代码,恰恰相反,那些实现底层细节的代码应该依赖、高层策略性的代码。


结束语


网络异常,图片无法展示
|


其实仔细思考这些原则的内涵,在之前的整洁编码中也有体现,整洁的架构本身就是由坚实的框架与一砖一瓦构成,每一处都透露出这些原则的无穷奥妙。


在接下来的几篇文章中,我们将一起学习这些原则在软件架构上的意义~


最后


✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨

少年向来不识天高地厚
放眼处皆自负才高八斗
虽是自命风流
倒也坦诚无忧
我爱这样的少年
谦和而狂妄
骄傲又坦然☀️

✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨

相关文章
|
算法 计算机视觉
yolov5 deepsort-船舶目标检测+目标跟踪+单目测距+速度测量(代码+教程)
yolov5 deepsort-船舶目标检测+目标跟踪+单目测距+速度测量(代码+教程)
|
7月前
|
安全 C++
C++ 智能指针详解:从原理到实践
深入解析 C++ 智能指针的原理与用法,掌握 unique_ptr、shared_ptr、weak_ptr 的最佳实践
|
数据库连接 数据库 Python
信号量(Semaphore)是一个同步工具
信号量(Semaphore)是一个同步工具
561 14
|
监控 Java API
Android经典实战之OkDownload:一个经典强大的文件下载开源库,支持断点续传
本文介绍的 OkDownload 是一个专为 Android 设计的开源下载框架,支持多线程下载、断点续传和任务队列管理等功能,具备可靠性、灵活性和高性能特点。它提供了多种配置选项和监听器,便于开发者集成和扩展。尽管已多年未更新,但依然适用于大多数文件下载需求。
1542 1
|
缓存 负载均衡 网络协议
高并发架构的CDN知识介绍
本文详细介绍了网络请求过程,特别是大型网站架构中DNS和CDN的作用。通过一张常用架构图,文章解释了从客户端请求到服务器响应的全过程,包括DNS解析、负载均衡、CDN加速等关键环节,帮助读者深入了解高并发架构的设计原理和优化方法。
756 1
|
存储 Dart 编译器
Dart笔记:Dart语言中的注解(元数据)
Dart笔记:Dart语言中的注解(元数据)
832 0
|
Java 数据处理 数据库
深入解析Spring Batch:企业级批处理框架的技术之旅
深入解析Spring Batch:企业级批处理框架的技术之旅
|
传感器 物联网 芯片
低功耗蓝牙(BLE) 和 经典蓝牙(SPP) 的区别
如何选择适合的蓝牙协议以实现最佳的无线通信效果。
2153 0
|
编译器 C语言
C语言基础专题 - 头文件引用
C语言基础专题 - 头文件引用
493 0
|
存储 数据挖掘 BI
带你读《Apache Doris 案例集》——04 星云零售信贷 基于 Apache Doris 的 OLAP 演进之路(2)
带你读《Apache Doris 案例集》——04 星云零售信贷 基于 Apache Doris 的 OLAP 演进之路(2)
357 0