开闭原则(Open Closed Principle,OCP)的定义是:软件实体应当对(提供者的)扩展开放,对(使用者的)修改关闭。
开闭原则的含义是:当应用的需求改变时,在不修改软件实体的源代码或者二进制代码的前提下,可以扩展模块的功能,使其满足新的需求。
开闭原则是面向对象程序设计的终极目标,它使软件实体拥有一定的适应性和灵活性的同时具备稳定性和延续性。
1、可以提高软件测试的效率:只需要对新扩展的代码进行测试即可,原有的代码由于未曾改变而可以不必反复测试。
2、可以提高代码的可复用性:粒度越小,被复用的可能性就越大;在面向对象的程序设计中,根据原子和抽象编程可以提高代码的可复用性。
3、可以提高软件的可维护性:遵守开闭原则的软件,其稳定性高和延续性强,从而易于扩展和维护。
设计模式的其他各项原则和其他各种设计模式,都是对开闭原则的体现。
可以通过“抽象约束、封装变化”来实现开闭原则,即通过接口或者抽象类为软件实体定义一个相对稳定的抽象层,而将相同的可变因素封装在相同的具体实现类中。