對象目前在代碼中,我使用的對象工廠返回我基於字符串的標籤,這已經切斷其目的直到現在的處理器。對象的工廠,創建需要依賴
using Core;
using Data;
public static class TagProcessorFactory
{
public static ITagProcessor GetProcessor(string tag)
{
switch (tag)
{
case "gps0":
return new GpsTagProcessor();
case "analog_manager":
return new AnalogManagerTagProcessor();
case "input_manager":
return new InputManagerTagProcessor();
case "j1939":
return new J1939TagProcessor(new MemcachedProvider(new[] { "localhost" }, "DigiGateway"), new PgnRepository());
default:
return new UnknownTagProcessor();
}
}
}
長途區號
var processor = TagProcessorFactory.GetProcessor(tag.Name);
if (!(processor is UnknownTagProcessor))
{
var data = processor.Process(unitId, tag.Values);
Trace.WriteLine("Tag <{0}> processed. # of IO Items => {1}".FormatWith(tag.Name, data.Count()));
}
,你可以看到我的項目之一具有依賴性和IM試圖執行測試代碼,我想在模擬庫和高速緩存提供商能夠通過,但我似乎可以認爲一種方法來做到這一點。
這是一個不好的設計或任何人有任何想法解決它,使我廠可測試?
感謝
是否有你決定不使用很多很多免費和優秀的依賴注入可用於C#的一個容器一些令人信服的理由?他們中的任何一個都可以優雅地處理這種注入模式 – anthony 2010-10-28 19:54:03
我是。我使用autofac,我的問題是我不想傳入構建器/容器來解決依賴關係,iv讀取不通過容器。 – Waterboy4800 2010-10-28 19:57:48
我會說傳遞一個工廠周圍是可以接受的,因爲這個類正在請求延遲創建一個對象。 – aqwert 2010-10-28 23:51:41