如何删除两个类之间的依赖关系?

ROO*_*OMY 1 c# design-patterns

例如:

public class A {}

public class B
{
    public void test()
    {
        A obj = A();
    }
}
Run Code Online (Sandbox Code Playgroud)

我只是想找到最好的方法去除类A和之间的依赖关系B,或者如果在子类级别添加更多类,哪种设计模式最适合这个?

Gil*_*een 6

A在构造函数中接收一个实例.更好的是A继承一些接口并在构造函数中接收该接口.

public interface IA {}
public class A : IA {}

public class B 
{
    public IA AInstance { get; set; }
    public B (IA a)
    {
        AInstance = a;
    }

    public void test()
    {
        /* do something with `AInstance` */
    }
}
Run Code Online (Sandbox Code Playgroud)

查看依赖注入控制反转的概念:

  1. 什么是依赖注入?
  2. 什么是控制倒置?

并将其全部包含在SOLID主体下


如果你不能IA作为一个依赖,但需要在你的B类中创建它的新实例然后使用工厂设计模式,让B依赖于某些实例ISomeFactory