Bertrand Meyer在 1988 年提出了 “开闭”原则,英文全称为 Open-Closed Principle,通常被简写为 OCP 。这是一条非常著名的原则,内容如下:
Software entities (classes,modules,functions,ect) should be open for extension,but closed for modification.
这一原则对开发软件实体提出了两个要求:
- 开放扩展,这使得我们可以为软件实体添加功能
- 关闭修改,这使得我们可以保持软件实体的稳定
要实现这一原则的关键是抽象。
这一原则也告诉我们在学习设计模式时要思考两个问题:
- 该模式开放了那些方面?该模式关闭了那些方面?
- 该模式为了实现 “开闭”原则 负出了怎样的代价?
回答这两个问题可以使我们决定是否使用一个模式。我一直认为模式是用来解决问题的。如果模式使用的不自然可能会给我们制造麻烦,这就得不偿失了。千万不要认为在项目中模式用的越多越好。