私は依存性注入を学ぼうとしていますが、まだ把握していない微妙な点がたくさんあります。そのために読み始めた本の 1 つに、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>();
}
}
}
しかし、これは実際には「サービスの場所」ではありませんか?