任务处理器的设计模式

时间:2015-06-27 22:02:47

标签: design-patterns factory abstract

目前我正在开发一段代码,它使用处理器和版本获取数据并对其进行处理。例如

IProcessor aProcessor = new AProcessor(new AProcessorVersion1Translator());
aProcessor.GetResult("sample data");

目前我正在使用Factory方法根据类型获取处理器:

IProcessor aProcessor = processorFactory.GetProcessor("A");

每个处理器都有不同数量的版本转换器,这就是我的问题。我应该在哪里使用版本转换器工厂,我应该将它传递给处理器工厂对象吗?或者我应该为每个处理器创建单独的工厂吗?

1 个答案:

答案 0 :(得分:0)

我正在做第二个解决方案。 假设每个处理器都有自己的版本转换器列表,并且每个处理器可能有不同的方法,我的做法如下:

IProcessor: no implementation, just use for grouping purpose

ProcessorA: IProcessor
ProcessorB: IProcessor
ProcessorC: IProcessor

Then I was changing the code you wrote to:
var aProcessor = processorFactory.GetProcessor("A") as IProcessorA;
aProcessor.GetVersionTranslator([enum specific to type of Processor])

如果版本转换器不属于特定的处理器,那么第一个解决方案可能是错误的,然后它将需要一些验证/异常