开闭原则

开闭原则【开闭原则】在面向对象编程领域中,开闭原则规定“软体中的对象(类,模组,函式等等)应该对于扩展是开放的,但是对于修改是封闭的”,这意味着一个实体是允许在不改变它的原始码的前提下变更它的行为 。该特性在产品化的环境中是特别有价值的,在这种环境中,改变原始码需要代码审查,单元测试以及诸如此类的用以确保产品使用质量的过程 。遵循这种原则的代码在扩展时并不发生改变,因此无需上述的过程 。
基本介绍中文名:开闭原则
外文名:Open Closed Principle
着作:《面向对象软体构造》
哪年提出:1988年
特徵:对于修改是关闭的
简介在面向对象编程领域中,开闭原则规定“软体中的对象(类,模组,函式等等)应该对于扩展是开放的,但是对于修改是封闭的”,这意味着一个实体是允许在不改变它的原始码的前提下变更它的行为 。该特性在产品化的环境中是特别有价值的,在这种环境中,改变原始码需要代码审查,单元测试以及诸如此类的用以确保产品使用质量的过程 。遵循这种原则的代码在扩展时并不发生改变,因此无需上述的过程 。开闭原则的命名被套用在两种方式上 。这两种方式都使用了继承来解决明显的困境,但是它们的目的,技术以及结果是不同的 。梅耶开闭原则伯特兰·迈耶一般被认为是最早提出开闭原则这一术语的人,在他1988年发行的《面向对象软体构造》中给出 。这一想法认为一旦完成,一个类的实现只应该因错误而修改,新的或者改变的特性应该通过新建不同的类实现 。新建的类可以通过继承的方式来重用原类的代码 。衍生的子类可以或不可以拥有和原类相同的接口 。梅耶的定义提倡实现继承 。具体实现可以通过继承方式来重用,但是接口规格不必如此 。已存在的实现对于修改是封闭的,但是新的实现不必实现原有的接口 。多态开闭原则在20世纪90年代,开闭原则被广泛的重新定义由于抽象化接口的使用,在这中间实现可以被改变,多种实现可以被创建,并且多态化的替换不同的实现 。相比梅耶的使用方式,多态开闭原则的定义倡导对抽象基类的继承 。接口规约可以通过继承来重用,但是实现不必重用 。已存在的接口对于修改是封闭的,并且新的实现必须,至少,实现那个接口 。罗伯特·C·马丁1996年发表的文章《开闭原则》是使用这种方法的启发式着作 。在2001年,Craig Larman把开闭原则关联到了Alistair Cockburn的名为受护的变数的模式以及David Parnas关于信息隐藏的讨论 。参见SOLID- “SOLID”中的 O 指代了开闭原则