开闭原则(Open
开闭原则是面向对象设计原则中最具代表性的一条,由计算机科学家伯特兰·迈耶(Bertrand Meyer)在一九八八年的著作中首次提出。它的核心表述是:软件实体(类、模块、函数等)应当对扩展开放,对修改关闭。
概述所谓对扩展开放,是指当需求变化时,可以通过增加新的代码单元来赋予系统新的行为;所谓对修改关闭,是指这种扩展不应以修改现有源代码为代价。这样一来,已经通过测试、正在稳定运行的代码得以保持不动,从而降低引入回归缺陷的风险。
核心原理依赖抽象而非具体实现,把稳定的部分抽象为接口或基类。通过继承、组合或实现接口的方式,以新增子类或新增实现来完成扩展。把可能变化的部分隔离到独立的扩展点,使核心逻辑不随需求波动而改动。常借助多态、策略模式、插件机制等手段落地。应用场景典型例子是图形绘制系统:若把面积计算写成对不同图形类型的一长串分支判断,每新增一种图形就得修改这段代码,违反了开闭原则;改为让每种图形实现统一的面积接口后,新增图形只需增加一个类,原有代码无需改动。各类框架的插件体系、支付渠道的可插拔接入、日志与序列化的可替换实现,都是该原则的实际应用。
常见问题问:完全不修改现有代码可能吗?答:很难做到绝对,原则追求的是让核心稳定代码尽量不被频繁改动。合理的抽象能覆盖大多数可预见的变化方向,但过度抽象也会带来复杂度,需要权衡。
问:开闭原则和里氏替换原则有何联系?答:开闭原则常通过继承和多态实现扩展,而里氏替换原则保证子类能安全替换父类,是开闭原则可靠落地的保障,两者相辅相成。
波兰队无缘世界杯,莱万的未来将何去何从?
丰田锐志和迈腾哪个好