Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 任务处理器设计模式_Design Patterns_Factory_Abstract - Fatal编程技术网

Design patterns 任务处理器设计模式

Design patterns 任务处理器设计模式,design-patterns,factory,abstract,Design Patterns,Factory,Abstract,目前,我正在编写一段代码,它获取数据并使用处理器和版本进行处理。乙二醇 IProcessor aProcessor = new AProcessor(new AProcessorVersion1Translator()); aProcessor.GetResult("sample data"); 目前,我正在使用Factory方法根据类型获取处理器: IProcessor aProcessor = processorFactory.GetProcessor("A"); 每个处理器都有不同数量

目前,我正在编写一段代码,它获取数据并使用处理器和版本进行处理。乙二醇

IProcessor aProcessor = new AProcessor(new AProcessorVersion1Translator());
aProcessor.GetResult("sample data");
目前,我正在使用Factory方法根据类型获取处理器:

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

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

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

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])

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

我正在执行第二个解决方案。 假设每个处理器都有自己的版本转换器列表,并且每个处理器可能有不同的方法,我是按照以下方式进行的:

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])
如果版本转换器不属于特定处理器,则第一种解决方案可能是错误的,然后需要一些验证/异常