【问题标题】:Design pattern with task processor带有任务处理器的设计模式
【发布时间】:2015-06-27 22:02:46
【问题描述】:

目前我正在编写一段代码,该代码使用处理器和版本获取数据并处理它。例如

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

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

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

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

【问题讨论】:

    标签: design-patterns factory abstract


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 2011-06-16
      • 2017-11-23
      • 2016-03-29
      相关资源
      最近更新 更多