查看更多
当前 - 选择题 - 面向对象设计
简单
单选题
2025年5月第42题
#第二版教材
#必须掌握

在一个图形处理系统中,已有一个 Circle 类并通过统一接口 Shape 提供绘图功能。现在需要增加一个 Triangle 类,也希望通过 Shape 接口支持绘图功能。若在不修改原有接口和 Circle 类代码的前提下实现此功能,这种做法遵循了哪一种面向对象设计原则(开闭原则)。

问题(1)
浓缩知识点

开闭原则是面向对象设计的核心原则之一,核心要求是软件实体包括类、模块、函数等要对扩展开放、对修改关闭,也就是新增功能时优先通过扩展已有代码来实现,而非直接修改原有代码,这能最大程度降低改动带来的风险,保障原有功能的稳定性,提升系统的可维护性和扩展性。实际开发中,像图形系统新增图形类、电商系统新增支付方式等场景,都可依托统一接口扩展新实现类来完成功能拓展。此外,开闭原则常和其他面向对象设计原则配合使用,比如单一职责原则确保每个类只负责单一功能,减少后续因功能变动导致的修改;依赖倒置原则要求依赖抽象而非具体实现,为扩展提供灵活基础;里氏替换原则保障子类可安全替换父类,维持系统行为一致性,这些原则相互配合,能共同构建出灵活、健壮且易于维护的面向对象系统。

正确答案
B

本题考察的是面向对象设计的开闭原则(OCP, Open-Closed Principle)
开闭原则指出:软件实体(类、模块、函数等)应对扩展开放,对修改关闭。即在不修改已有代码的前提下,通过扩展(如新增类)来实现新功能。
A选项单一职责原则:强调一个类应该只有一个引起它变化的原因,即只负责一个功能,不直接涉及是否修改代码来扩展功能。
C选项依赖倒置原则:强调高层模块不应该依赖底层模块,二者都应该依赖抽象,也不是本题关键。
D选项里氏替换原则:指子类对象能够替换父类对象出现的位置,保持行为一致,虽然相关但不是重点考察点。
因此,本题正确答案是 B. 开闭原则,体现了通过扩展(添加 Triangle 类),而不修改已有接口和 Circle 类,来实现系统扩展性

联系我们
隐私协议
用户协议
微信公众号
知乎
小红书
浙ICP备2021029036号
@2022-2026
嘉兴市安芯网络科技有限公司 版权所有