开放-封闭原则

简介:     开放-封闭原则,是说软件实体(类、模块、函数等等)应该可以扩展,但是不可以修改。   该原则有两个特性: 1、对于扩展是开放的(open for extension)。

    开放-封闭原则,是说软件实体(类、模块、函数等等)应该可以扩展,但是不可以修改。

 

该原则有两个特性:

1、对于扩展是开放的(open for extension)。

2、对于更改是封闭的(closed for modification)。

 

    在做任何系统的时候,都 不要指望 系统一开始时需求确定,就再也不会变化,这是不现实也不科学的想法。而既然需求是一定会变化的,那么如何在面对需要的变化时,设计的软件可以相对容易修改,不至于新需求来时,就要把整个程序推倒重来。怎样的设计才能面对需求的改变却可以保持相对稳定,从而使得系统可以在第一个版本以后不断推出新的版本?就需要用到开放-封闭。

 

    面对需求,对程序的发动是通过增加新代码进行,而不是更改现有的代码。这是开放-封闭原则的精神所在。

相关文章
|
Rust 算法 数据安全/隐私保护
【密码学】一文读懂XTEA加密
本篇文章,我们来看一下上一次讲过的TEA加密算法的一个升级版XTEA, 相比于TEA, XTEA的安全性显然是更高的,其中的过程要比TEA稍微复杂一点点。
1480 0
【密码学】一文读懂XTEA加密
|
Ubuntu Linux vr&ar
IM跨平台技术学习(十二):万字长文详解QQ Linux端实时音视频背后的跨平台实践
本文详细记录了新版QQ音视频通话在 Linux 平台适配开发过程中的技术方案与实现细节,希望能帮助大家理解在 Linux 平台从 0 到 1 实现音视频通话能力的过程。
461 2
|
安全 网络协议 网络安全
【信息安全管理与评估】2024年北京市职业院校技能大赛高职组“信息安全管理与评估”赛题模块(一)
【信息安全管理与评估】2024年北京市职业院校技能大赛高职组“信息安全管理与评估”赛题模块(一)
【信息安全管理与评估】2024年北京市职业院校技能大赛高职组“信息安全管理与评估”赛题模块(一)
|
存储 SQL 缓存
【云栖2023】李钰:阿里云 E-MapReduce 全面开启 Serverless 时代
本文根据 2023 云栖大会,阿里云资深技术专家、阿里云开源大数据平台EMR负责人李钰演讲实录整理而成。
798 1
【进程通信】用命名管道模拟server和client之间的通信
【进程通信】用命名管道模拟server和client之间的通信
|
分布式计算 Hadoop Java
Hadoop【部署 01】腾讯云Linux环境CentOS Linux release 7.5.1804单机版hadoop-3.1.3详细安装步骤(安装+配置+初始化+启动脚本+验证)
Hadoop【部署 01】腾讯云Linux环境CentOS Linux release 7.5.1804单机版hadoop-3.1.3详细安装步骤(安装+配置+初始化+启动脚本+验证)
282 0
|
存储 缓存 算法
vSAN数据恢复-开启重删压缩机制的全闪存vSAN数据恢复案例
vsan数据恢复环境: 一套VMware vSAN超融合基础架构,全闪存,开启压缩重删。共11台服务器节点。每台服务器节点上配置1块PCIE固态硬盘和8-10块SSD固态硬盘。 每个服务器节点上创建1个磁盘组,每个磁盘组将1个PCIE固态硬盘识别为2个硬盘作为缓存盘,将8-10个SSD固态硬盘作为容量盘,共同组成vSAN存储空间,用来存储虚拟机文件。 vsan故障&检测: vSAN中一台服务器节点的PCIE缓存盘发生故障,导致vSAN逻辑架构出现故障,2台虚拟机磁盘组件出现问题,虚拟机无法正常使用。
vSAN数据恢复-开启重删压缩机制的全闪存vSAN数据恢复案例
|
缓存 NoSQL 关系型数据库
|
SQL 消息中间件 资源调度
Flink日志问题之日志无法查看如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
|
Python Windows
Python将md批量转为docx
这两天写毕业论文, 发现了一个可以将markdown快速转为word格式的小工具pandoc, 非常好用, 比如我有一个名为毕业论文.md的文件, 我只需在命令行运行 pandoc 毕业论文.
1858 0