目前我正在开发一段代码,它使用处理器和版本获取数据并对其进行处理。例如
IProcessor aProcessor = new AProcessor(new AProcessorVersion1Translator());
aProcessor.GetResult("sample data");
目前我正在使用Factory方法根据类型获取处理器:
IProcessor aProcessor = processorFactory.GetProcessor("A");
每个处理器都有不同数量的版本转换器,这就是我的问题。我应该在哪里使用版本转换器工厂,我应该将它传递给处理器工厂对象吗?或者我应该为每个处理器创建单独的工厂吗?
答案 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])
如果版本转换器不属于特定的处理器,那么第一个解决方案可能是错误的,然后它将需要一些验证/异常