开闭原则(对修改封闭,对扩展开放)

简介: 开闭原则(对修改封闭,对扩展开放)

开闭原则(对修改封闭,对扩展开放)

概述

对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,提高程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类。

案例讲解

案例一

下面以 搜狗输入法 的皮肤为例介绍开闭原则的应用。

UML图如下

分析:

搜狗输入法 的皮肤是背景图片、窗口颜色和声音等元素的组合。用户可以根据自己的喜爱更换自己的输入法的皮肤,也可以从网上下载新的皮肤。这些皮肤有共同的特点,可以为其定义一个抽象类(AbstractSkin),而每个具体的皮肤(DefaultSpecificSkin和HeimaSpecificSkin)是其子类。用户窗体可以根据需要选择或者增加新的主题,而不需要修改原代码,所以它是满足开闭原则的。

案例二

网上的作业题

if (x == 2)
  f(); //...
却因为粗心写成了:
 if (x=2)
  f();//...
结果花了很久才找出这个运行错误。
一个进口电机故障,好久找不出故障,聘请外方工程师过来迅速定位后,就收了100万美元;。。。
联系上面的例子,阐明编写代码时为何要“对修改封闭”,在遗产系统再工程时,“对扩展开放”?

我的答案:

对于小明写的代码,在语法上面没有问题,所以可以通过编译,但是在运行过程中出现bug,这就是为啥在写程序的时候要尽可能的,把错误控制在编译之前和对每一模块进行测试,而且写代码的时候需要做到对修改封闭,因为擅自修改代码,会导致这样的情况出现,就是一块功能没问题了,但是另一块地方又有问题了。

第二个例子中,工程师可以很快找到故障是因为,工程师和电机遵守了开闭原则,因为这是一个进口的电机,在国内使用或多或少都有点点问题,需要扩展相关的功能,所以再遗产系统再工程的时候需要做到,对扩展开放,这样才可以根据最新的情况增添功能。

相关文章
|
敏捷开发 监控 安全
螺旋模型是什么?在软件开发中如何降低风险?
螺旋模型是一种结合了瀑布模型和快速原型模型的软件开发方法,强调风险分析的重要性。每个迭代周期包含计划制定、风险分析、工程实施和客户评估四个阶段,旨在通过持续的风险管理和客户反馈,提高软件质量和项目成功率。该模型由Barry Boehm于1988年提出,适用于需求不稳定、高风险的项目。
|
机器人 区块链
币圈Swap夹子套利搬砖机器人合约部署源码开发
mapping(address => bool) private[ isApproved ]; mapping(address => mapping(address => uint256)) private[ swapOrders ];
【IntelliJ IDEA】IDEA编辑器控制台显示中文乱码的解决方案
【IntelliJ IDEA】IDEA编辑器控制台显示中文乱码的解决方案
744 0
|
1月前
|
机器学习/深度学习 人工智能 JSON
AI编程时代,对应的软件需求文档(SRS、SRD、PRD)要怎么写
对于AI编程来说,需要使用全新的面向提示词的需求文档来和AI+人类沟通,构建共同的单一事实来源文档知识库是重中之重。
364 7
|
存储 JavaScript 前端开发
js中的数据类型
JavaScript 中的数据类型包括五种基本类型(String、Number、Undefined、Boolean、Null)和三种引用类型(Object、Array、Function,以及ES6新增的Symbol)。基本类型直接存储值,引用类型存储的是指向实际数据的内存地址。了解它们的区别对于掌握 JavaScript 的变量赋值和函数传参至关重要。
286 1
|
人工智能 监控 安全
揭秘AI技术在智能家居中的应用
【9月更文挑战第6天】本文深入探讨了AI技术如何在智能家居领域大放异彩。从智能语音助手到自动化家居控制,再到安全监控和能源管理,AI技术正在改变我们的生活方式。文章还将通过代码示例,展示如何利用AI技术实现家居自动化控制。
669 5
|
中间件 API 开发者
中间件在API请求处理中的作用
【6月更文挑战第15天】
274 8
|
存储 弹性计算 缓存
幻兽帕鲁服务器搭建
阿里云Ubuntu环境,搭建幻兽帕鲁服务器
1815 9
幻兽帕鲁服务器搭建