【发布时间】:2013-02-06 19:13:47
【问题描述】:
我正在尝试学习依赖注入,但我还没有掌握其中的许多微妙之处。为此,我开始阅读的其中一本书是 Karl Seguin 的"Foundations of Programming"。有一个关于依赖注入的例子:
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>();
}
}
}
但这不是“服务位置”吗?
【问题讨论】:
标签: c# language-agnostic loose-coupling service-locator