理论
在一般情况下,如果一个类依赖于某些服务,那么可能会在内部去创建需要的服务:
public class Foo
{
ISomeService _service;
public Foo()
{
_service = new SomeService();
}
public void DoSomething()
{
_service.PerformTask();
...
}
}
在项目规模比较小的时候这种做法无可厚非,但随着项目规模的扩大,Foo类与SomeService的紧耦合会显得缺少灵活性。
Foo应该只需要关心自身的实现并且确认服务提供了自身所需的接口即可,而不需要关心所选择的服务的实现细节:
public class Foo
{
ISomeService _service;
public Foo(ISomeService service)