OCP原则:“对扩展开放,对修改关闭”

这句话是简述,其实隐藏了重要的主语。真正的意义是:对使用者修改关闭,对提供者扩展开放。

例如:

class A 和 class B。A调用了B的一个方法,那么A就是consumer,也就是使用者。B就是provider,提供者。对使用者修改关闭是指业务逻辑上有了调整,那么作为consumer自身的代码应该保持不变,无需修改。

对扩展开放,这句话中的扩展是很重要的一个词。它说明了变化针对的是现有的功能,只有现有的功能修改了才叫扩展。新增加的功能并不能叫扩展。因此,对provider来说,扩展开发就是指对现有功能的修改。如果是新增了功能,那么A也必须相应的调整代码去调用新功能。

总结OCP原则:功能提供者扩展现有的功能,而调用者无需为适应变化而作出修改。

OCP原则适用范围很广泛,常见的就是接口之间的调用。因此,类与类之间的交互应该遵循一个原则:先定义接口,类之间通过对方提供的接口来进行交互。

05-26 02:44