我在理解如何管理我在開發的SDK中具有的內部依賴關係時遇到了一些麻煩,出於某種原因,我嘗試的所有內容似乎都很難處理。管理內部依賴關係
說我有這些類:
class Table
{
Table(string name,IQueryProvider provider, IComObject comobject) {}
}
class TableFactory
{
Table BuildTable(name) <- builds a table object.
}
是我遇到的問題是,BuildTable()方法創建一個IQueryProvider和IComObject並通過名稱下來。我已經實現了我希望什麼(如果我理解正確的話)的服務定位器模式,但如果我用這樣的:
BuildTable(string name)
{
IQueryProvider provider = ServiceLocator.GetInstance<IQueryProvider>();
IComObject comobject = ServiceLocator.GetInstance<IComObject>();
Table tab = new Table(name,provider,comobject);
return tab;
}
現在意味着我必須同時擁有IQueryProvider和IComObject在這使得服務定位我依賴關係難以查看和測試。所以,我創建了一個依賴工廠這樣創建不同類型的對象和工廠的東西:
class DependencyFactory
{
Table BuildTable(string name)
{
//call other BuildMethods to create objects.
//return new Table.
}
//Other Build methods for things like IQueryProvider, IComObject.
}
那麼我只有在我的服務定位器註冊DependencyFactory,然後就打電話構建方法。
有沒有這種氣味對你不好?
是我的第一個BuildTable方法好,還是我正確地關心它。
,但它仍然沒有真正解決不能夠看到的問題內部依賴關係。但是,它又是SDK的內部,所以我知道我需要什麼類型。嗯該怎麼做。 – 2009-06-27 14:07:26