我想學習依賴注入,並且還有很多細節我還沒有把握。我爲此開始閱讀的一本書是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>();
}
}
}
但不是這個「服務地點「其實?
我有Seemann的書,但它太詳細了,一開始太理論化了(至少這是我的感受)。儘管稍後我在學習了更多關於該主題後引用了本書的部分內容,並且對本書有所幫助。你有沒有其他書籍和/或在線資源建議? – hattenn
您可以嘗試通過Bob叔叔的「敏捷軟件開發,原則,模式和實踐」。有幾個關於DI的章節。 (無論如何,我推薦閱讀整本書。) – andreycha
我也可以推薦Mark Seemann的DI書:) – Ian