在基类中实例化子类对象的代码异味名称是什么?
代码异味名称及分析
这段代码存在的核心代码异味是基类依赖子类(Base Class Depends on Derived Class),同时严重违反了面向对象设计中的依赖倒置原则(Dependency Inversion Principle)。
问题核心拆解
- 基类
Base在自身的Execute方法中直接实例化并调用子类Child的方法,但Child本身继承自Base——这种设计完全颠倒了继承关系的逻辑:正常设计中应为子类依赖基类的抽象能力,此处却变成基类绑定了具体的子类实现。 - 该设计带来的负面影响:
- 基类与子类形成强耦合,修改子类的实现逻辑可能直接影响基类的行为
- 无法通过替换其他子类实现来扩展功能,违背了开闭原则
- 形成循环依赖链,代码的可维护性、可测试性大幅降低
对应设计原则的违背说明
依赖倒置原则要求:上层抽象模块不依赖下层具体实现模块,二者都应依赖抽象;抽象不应依赖细节,细节应依赖抽象。这段代码中,作为抽象层的基类直接依赖了作为具体实现的子类,完全违背了这一核心设计原则,属于典型的不良面向对象设计。
内容的提问来源于stack exchange,提问作者caramel1995
相关产品推荐
相关产品推荐

