开闭原则 (Open-Closed Principle, OCP) 是面向对象编程和软件工程中的一项更重要设计原则, 由 Bertrand Meyer 1898 年在他的著作《面向对象软件构造》中提出. 这一原则指出软件实体 (如类、模块和函数等) 应该对扩展开放 (Open for Extension), 对修改关闭 (Closed for Modification). 换句话说, 应该能够在不改动现有代码的基础上扩展功能, 当需要改变系统的行为时, 优先考虑通过添加新代码来实现, 而不是修改已有的、经过测试并验证正确的代码.
开闭原则的核心思想在于提高软件的可维护性和可扩展性,同时歼敌模块之间的耦合度. 他鼓励设计者在编写程序时, 规划好未来可能的变化点, 并提供抽象的接口或者抽象类来隔离变化, 使得当需求变化时, 可以向系统中添加新的实现, 而不需要修改现有的、已经工作良好的代码.
要实现开闭原则, 通常需要依赖于以下设计技术:
遵循开闭原则可以使如那件更易于维护和升级, 减少因修改既有代码带来的风险, 同时也促进了代码的重用.