设计原则(三):OCP 开闭原则

简介: 设计原则(三):OCP 开闭原则

背景介绍


这是我的《架构整洁之道》系列的第七篇,这一篇我们将一起学习 OCP 开闭原则~

《架构整洁之道》系列:



OCP 开闭原则


对 OCP 原则的描述应该为:设计良好的计算机软件应该易于扩展,同时抗拒修改。

我们可以解释为:一个设计良好的计算机系统应该在不需要修改的前提下就可以轻易被扩展。


尽管大部分软件设计师都己经认可了 OCP 是设计类与模块时的重要原则,但是在软件架构层面,这项原 则的意义则更为重大。


如果 A 组件不想被 B 组件上发生的修改所影响,那么就应该让 B 组件依赖于 A 组件。软件架构师可以根据相关函数被修改的原因、修改的方式及修改的时间来对其进行分组隔离,并将这些互相隔离的函数分组整理成组件结构,使得高阶组件不会因低阶组件被修改而受到影响。


结束语


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


OCP 是我们进行系统架构设计的主导原则,其主要目标是让系统易于扩展,同时限制其每次被修改所影响的范围。实现方式是通过将系统划分为一系列组件,并且将这些组件间的依赖关系按层次结构进行组织,使得高阶组件不会因低阶组件被修改而受到影响。

最后


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

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

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

相关文章
从rtsp视频流中截取图片
从rtsp视频流中截取图片
2227 0
|
Python
python使用pip镜像源加速安装包(清华、阿里、中科大)
python使用pip镜像源加速安装包(清华、阿里、中科大)
9077 0
python使用pip镜像源加速安装包(清华、阿里、中科大)
|
4月前
|
人工智能 数据可视化 开发者
深度解析基于LangGraph的Agent系统架构设计与工程实践
LangGraph作为Agent 生态中非常热门的框架,今天我将借助 LangGraph,更高效、更优雅的方式构建复杂智能体系统。
1267 2
|
12月前
|
存储 人工智能 调度
容器服务:智算时代云原生操作系统及月之暗面Kimi、深势科技实践分享
容器技术已经发展成为云计算操作系统的关键组成部分,向下高效调度多样化异构算力,向上提供统一编程接口,支持多样化工作负载。阿里云容器服务在2024年巴黎奥运会中提供了稳定高效的云上支持,实现了子弹时间特效等创新应用。此外,容器技术还带来了弹性、普惠的计算能力升级,如每分钟创建1万Pod和秒级CPU资源热变配,以及针对大数据与AI应用的弹性临时盘和跨可用区云盘等高性能存储解决方案。智能运维方面,推出了即时弹性节点池、智能应用弹性策略和可信赖集群托管运维等功能,进一步简化了集群管理和优化了资源利用率。
|
Java 测试技术 程序员
基于SpringBoot+Vue交流和分享平台的设计与实现(源码+部署说明+演示视频+源码介绍)(2)
基于SpringBoot+Vue交流和分享平台的设计与实现(源码+部署说明+演示视频+源码介绍)
331 1
|
XML Java 数据库连接
springboot中整合mybatis及简单使用
这篇文章介绍了如何在Spring Boot项目中整合MyBatis,包括依赖引入、配置数据源、创建测试表、编写Mapper接口和XML文件、以及创建Service和Controller层的步骤。
springboot中整合mybatis及简单使用
|
开发工具 git
【最新】如何将idea上的项目推送到gitee
【最新】如何将idea上的项目推送到gitee
3647 0
IDEA 中 project窗口,不显示项目工程目录,解决方法
IDEA 中 project窗口,不显示项目工程目录,解决方法
|
消息中间件 存储 Kafka
3分钟白话RocketMQ系列—— 核心概念
3分钟白话RocketMQ系列—— 核心概念
461 1