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

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

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

概述

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

案例讲解

案例一

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

UML图如下

分析:

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

案例二

网上的作业题

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

我的答案:

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

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

相关文章
|
4月前
|
设计模式 Java
装饰者模式:打破继承限制,实现灵活的功能扩展
装饰者模式:打破继承限制,实现灵活的功能扩展
67 0
|
11月前
|
设计模式 Java 关系型数据库
Java设计模式七大原则-开放-关闭原则
Java设计模式七大原则-开放-关闭原则
57 0
|
4月前
|
C++
C++中类的接口与实现分离的技术性探讨
C++中类的接口与实现分离的技术性探讨
85 1
|
1月前
类与类之间的协作模式问题之桥接模式在软件开发中应用的问题如何解决
类与类之间的协作模式问题之桥接模式在软件开发中应用的问题如何解决
|
1月前
|
设计模式
抽象工厂和原型设计模式之间的区别
【8月更文挑战第22天】
28 0
|
1月前
|
项目管理
类与类之间的协作模式问题之抽象工厂模式在工作中体现的问题如何解决
类与类之间的协作模式问题之抽象工厂模式在工作中体现的问题如何解决
|
3月前
|
区块链
开放-封闭原则
开放-封闭原则
39 1
|
3月前
|
设计模式 Java 数据库
Java设计模式:桥接模式实现灵活组合,超越单一继承的设计之道(十)
Java设计模式:桥接模式实现灵活组合,超越单一继承的设计之道(十)
|
设计模式
设计模式——开放-封闭原则
设计模式——开放-封闭原则
|
11月前
|
设计模式 Java
JAVA设计模式7:适配者模式,彻底解决两不兼容接口之间的问题
JAVA设计模式7:适配者模式,彻底解决两不兼容接口之间的问题
138 0