我正在尝试学习依赖注入,但我还没有掌握许多微妙之处。为此,我开始阅读的其中一本书是Karl Seguin 的《编程基础》。有一个关于依赖注入的例子:
public class Car
{
private int _id;
public void Save()
{
if (!IsValid())
{
//todo: come up with a better exception
throw new InvalidOperationException("The car must be in a valid state");
}
IDataAccess dataAccess = ObjectFactory.GetInstance<IDataAccess>();
if (_id == 0)
{
_id = dataAccess.Save(this);
}
else
{
dataAccess.Update(this);
}
}
}
然后他继续建议添加另一个间接级别,而不是ObjectFactory
直接在方法中调用:
public static class DataFactory
{
public static IDataAccess CreateInstance
{
get
{
return ObjectFactory.GetInstance<IDataAccess>();
}
}
}
但这不是“服务位置”吗?