0
点赞
收藏
分享

微信扫一扫

#yyds干货盘点#面向对象设计基本原则-开放封闭原则

开放封闭原则(Open-Closed Principle,OCP)指的是,对于一个类或者模块,如果业务需要修改或者功能需要扩展时,应尽可能地保证在只通过新添加代码,而不是修改原有代码的情况下完成。

该原则是Eiffel语言的设计者、法国计算机科学家Meyer提出的,最开始的描述是:当向模块添加字段或方法时,不可避免地需要对调用这个模块的程序进行修改,解决这个问题的方法是采用依赖于面向对象继承(特别是从实际父类进行的实现继承)的方法。而不是通过实现继承的方法来解决问题。

解决方式是现存的接口或抽象类对于修改原有的方法和属性是封闭的,但对新添加的方法和属性则是开放和允许的。

#yyds干货盘点#面向对象设计基本原则-开放封闭原则_抽象类

为什么要对原有的代码进行保护,对新加的代码开放呢?

所有的软件和程序都有一个生命周期,当需求和业务发生扩展和更新时,需要更新软件(修复缺陷和软件重构时的更新除外),要尽可能地保证软件的基本框架不变,尽可能不修改现有的代码,而是添加新的实现代码,使得软件具有更好的稳定性和可维护性。

实现扩展而不修改原有代码的基础就是采用接口或者抽象类等机制完成的。经过良好的定义,系统可以拥有一个相对稳定的抽象层,而将业务行为下沉到具体的实现层中。

如果业务有扩展,则可以将扩展的业务放到实现层中,只添加新的代码,不修改已有的代码,通过抽象层,将新的业务逻辑指定到新添加的业务实现层中。

如果有业务修改,则无需对抽象层进行任何改动,添加现实代码,替换固定的实现层代码,而不会影响实现层其他模块的行为。

举报

相关推荐

0 条评论