在其基类中声明和初始化子类类型的对象

Declaring and initializing object of type child class in its base class

提问人:caramel1995 提问时间:9/2/2023 更新时间:9/2/2023 访问量:34

问:

以下代码提交的代码气味的名称是什么。我试图在谷歌上找到以下代码气味的事实名称,但无济于事。

我之所以要搜索它,是因为我看到有人在他们的代码中犯了这种罪,我想通过向他们展示一篇讨论这种代码气味的文章来说服他们这是一种代码气味。

如今,仅仅口头告诉他们他们错了,很难说服他们,我必须向他们发送一篇在线文章,告诉他们他们错了。

public class Base
{
   public Execute(string params)
   {
      Child c = new Child();
      c.Run(params);
   }
}
public class Child : Base
{
    void Run(string params)
    {
      //Do something
    }
}
对象 OOP 继承 面向对象分析

评论


答:

0赞 jaco0646 9/2/2023 #1

一个服务直接实例化另一个服务违反了依赖关系反转原则,无论实例化的类是子类还是与实例化器无关。

父类 --> 子实例化的情况具有循环依赖关系的额外味道,因为每个类都引用另一个类。