定义:软件实体(类、模块、函数等)对扩展开放,对修改关闭

类比:就像建造一栋房子,可以在原有的基础上增加新的房间(扩展),而不需要拆掉原来的房子(修改)

应用场景

  • 需要在不修改现有代码的情况下添加新功能时
  • 想保持系统的稳定性并且减少引入新错误的风险

优点

  • 提高系统的可扩展性
  • 减少了修改代码引入新错误的风险