敏捷软件开发之OCP

第9章 开放-封闭原则

任何系统在其生命中都会发生变化。如果我们期望开发出的系统不会在第1版后就被抛弃,就必须牢记这一点。

1. 开放-封闭原则

软件实体(类、模块、函数等等)应该是可以扩展的,但是不可以修改的。、
如果程序中的一处改动就会产生连锁反应,导致一系列相关模块的改动,那么设计就具有僵化性的臭味。如果正确地应用OCP,那么以后再进行同样的改动时,就只需要添加新的代码,而不必改动已经正常运行的代码。

2. 描述

两个主要特征:1. 对于扩展是开发的。2. 对于更改是封闭的。扩展模块行为的通常方式就是修改该模块的源代码。不允许修改的模块常常都被认为是具有固定的行为。

3. 关键是抽象

在面向对象编程中,可以创建出固定却能够描述一组任意个可能行为的抽象体。这个抽象体就是抽象基类。而这一组任意个可能的行为则表现为可能的派生类。
模块可以操作一个抽象体。由于模块依赖于一个固定的抽象体,所以它对于更改可以关闭的。同时,通过从这个抽象体派生,也可以扩展此模块的行为。

4. 结论

在许多方面,OCP都是面向对象设计的核心所在。遵循这具原则可以带来面向对象技术所声明的巨大好处。然而,并不是说只要使用一种面向对象语言就是遵循了这个原则。对于应用程序中的每个部分都肆意地进行抽象同样不是一个好主意。正确的做法是,开发人员应该仅仅对程序中呈现出频繁变化的那些部分做出抽象。拒绝不成熟的抽象和抽象本身一样重要。

你可能感兴趣的:(敏捷软件开发之OCP)