1、开闭原则

1.1 定义

软件实体应当对于扩展是开放的,而对于修改是关闭的。
软件实体包括:项目所划分的模块,类或接口以及方法。

1.2 作用

开闭原则是面向对象设计的核心,也是面向对象设计的终极目标,它使得软件实体在具有灵活性的同时还保持了稳定性和扩展性,具体作用如下:
<1> 保证程序的稳定性
  需求变更时,只需要对相应的功能进行扩展,不需要或者尽可能少的修改现有功能,使程序处于一个相对稳定的状态。
<2> 使代码具有良好的可复用性
  粒度越小,被复用的程度就越大;在面向对象的程序设计中,根据原子和抽象编程可以提高代码的可复用性。
<3> 增强软件的可维护性
  采用开闭原则设计的软件,由于自身的稳定性较强,所以对于后期的维护以及扩展自然就容易一些。
<4> 降低测试的工作量
  由于只是对原有功能做了增加,所以只需要测试新增的功能即可。

1.3 实现

可以通过“抽象、封装”来实现开闭原则,即通过接口或者抽象类为软件实体定义一个相对稳定的抽象层,而将相同的可变因素封装在相同的具体实现类中。因为抽象灵活、适应性好,所以一个稳定的抽象层基本可以保证软件架构的稳定,而变化频繁的部分由各个实现类具体实现,当需求改变时,新增一个实现类去扩展就可以了。
例如,现有一个程序只有加法操作,我们可以直接创建一个加法类来实现
在这里插入图片描述
若是现在需要新增一个减法功能,就会发现需要修改现有的类,那就违背了开闭原则,若新增加一个类处理减法功能,则又会造成代码重复,此时我们就需要对代码进行重构,增加一个抽像的运算类,然后通过继承、多态的方式将具体的功能加法运算、减法运算隔离开,这样程序就会变得非常灵活,既可以满足现有的需求,又可以应对将来的变化,若是再增加乘法和除法运算,则只需要新增实现类对程序进行扩展即可。
在这里插入图片描述
需注意:开发人员应该只对程序中呈现出频繁变化的那些部分进行抽象,但不能对程序中的每个部分都刻意地进行抽象,拒绝不合理的抽像和抽象本身一样重要。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值