OCP
英文:Open-Closed Principle
中文:开闭原则
是什么
我们要让代码同时满足对扩展开放、对修改关闭着两个属性。
对扩展开放表示代码的行为可以扩展。
对修改关闭表示当对代码的行为进行扩展时,其他代码完全不受到影响。
代码如果同事满足这两个属性,就可以在不影响既有代码的前提下扩展功能。
为什么
不论什么软件,只要它还在生命周期内,就一定会发生变化。而且软件的寿命远比我们想象的要长。因此,我们设计的软件要既能适应变化,又能保持长期的稳定。
这就要求代码能够灵活应对变化,对扩展开放,对修改关闭,如果能满足上述要求,就算需求发生变化,我们只要给代码添加新的行为,就能毫无风险的完成对软件的修改。
怎么做
我们要给代码添加接口。
在设计具有某项功能的模块时,如果让模块的使用者客户端直接调用模块的提供者服务器,我们就可以说这个设计是死板的,因为在这种情况下,如果想使用其他服务器,还需要修改客户端。
因此,我们在客户端和服务器之间为模块的使用者设置“客户端接口”,这个客户端接口由服务器实现。
这样一来,在添加拥有新功能的服务器时,只要该服务器上有客户端接口,客户端就可以直接调用新服务器,我们就不用再修改代码了,也就是说,我们可以在不修改当前代码的前提下添加新功能。