OOD设计原则之开闭原则(OCP)
开闭原则OCP(open-close-principle)在维基百科的定义:在面向对象编程中,开闭原则规定“软件中的对象(类,模块,函数等等)应该对扩展是开放的,但是对于修改是封闭的”,这意味着一个实体是允许在不改变他的源代码的前提下变更他的行为。
梅耶开闭原则
勃兰特丶梅耶一般被认为是最早提出开闭原则这一术语的人,1988年在面向对象软件构造中给出,这一想法认为一旦完成,一个类的实现只应该因错误而修改,新的或者改变的特性应该通过新建不同的类实现。新建的类可以通过继承的方式来重用原类的代码。衍生的子类可以或不可以拥有和原类相同的结果。
梅耶的定义是提倡继承。具体实现通过继承方式来重用,但是接口规格不必如此。已存在的实现对于修改是封闭的,但是新的实现不必实现原有的接口。
多态开闭原则
在20世纪90年代,开闭原则被广泛的重新定义由于抽象化接口的使用,在这中间实现可以被改变,多种实现可以被创建,并且多态化的替换不同的实现。
相比梅耶的使用方式,多态开闭原则的定义倡导对抽象基类的继承。接口规约可以通过继承来重用,但是实现不必重用。已存在的接口对于修改是封闭的。