对象目前在代码中,我使用的对象工厂返回我基于字符串的标签,这已经切断其目的直到现在的处理器。对象的工厂,创建需要依赖
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