例如:
public class A {}
public class B
{
public void test()
{
A obj = A();
}
}
我只是寻找删除类A
和B
之间依赖关系的最佳方法,或者如果在子类级别添加更多类,哪种设计模式最适合这种情况?
答案 0 :(得分: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` */
}
}
查看Dependency Injection和Inversion of Control的概念:
并将其全部包裹在SOLID principals
下如果您无法将IA
作为依赖项,但需要在B
类中创建它的新实例,请使用Factory设计模式并让B
依赖在某些ISomeFactory
答案 1 :(得分:0)
我建议您使用IoC作为设计模式。它消除了类的依赖性,并且可以在单元测试时模拟对象