设计心法之开闭原则

软件实体的定义:项目中分离出来的模块、类与接口、方法

开闭原则 (OCP):

关键词:对扩展开放,对修改关闭

背景:

需求的变化是必然的,当需求变化时,我们该怎样去实现新的需求呢?可选方案通常有两种:1、修改原有代码。2、拓展原有代码。两个方法都可以实现,但是哪个方法更好呢,显然第二个,原因如下:

  • 提高效率:修改原有代码,需要对原有逻辑有非常深的了解,这需要花费大量的时间。
  • 便于测试:修改原有代码,会带来诸多不确定性的影响因素,对原有功能影响的范围不可把控,就需要回归测试,增加工作量,成本极高。而在原有基础上进行拓展的话,就无需做大范围回归测试,影响范围可控。

定义:

软件实体应当对扩展开放,对修改关闭。当应对需求改变时,在不修改软件实体的源代码或者二进制代码的前提下,可以扩展模块的功能,使其满足新的需求。

作用:

开闭原则是面向对象设计的终极目标,使软件实体拥有一定的适用性和灵活性的同时具备稳定性和延续性。

  1. 对测试的影响比较小(只需要对扩展部分测试)
  2. 可以提高代码的可复用性(变动越小,可复用性越高)
  3. 可以提高软件的可维护性

最佳实践:

可以通过“抽象约束,封装变化”来实现开闭原则,即通过接口或抽象类为软件实体定义一个相对稳定的抽象层,而将相同的可变因素封装在相同的具体实现类中。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容