Как реализовать использование нескольких стратегий во время выполнения

Мне нужно обработать список записей, возвращаемых службой.
Однако алгоритм обработки записи полностью меняется в зависимости от определенного поля записи.
Чтобы реализовать это, я определил интерфейс IProcessor, который имеет только один метод:

public interface IProcessor
{         
    ICollection<OutputEntity> Process(ICollection<InputEntity>> entities);
}

И у меня есть две конкретные реализации IProcessor для различных типов обработки.
Проблема в том, что мне нужно использовать все реализации IProcessor одновременно ... так как мне внедрить IProcessor в мой класс Engine, который управляет всем этим:

public class Engine
{
    public void ProcessRecords(IService service)
    {  
        var records = service.GetRecords();  
        var type1Records = records.Where(x => x.SomeField== "Type1").ToList();
        var type2Records = records.Where(x => x.SomeField== "Type2").ToList();

        IProcessor processor1 = new Type1Processor();  
        processor.Process(type1Records);

        IProcessor processor2 = new Type2Processor();  
        processor.Process(type2Records);
    }
}

Вот чем я сейчас занимаюсь ... и это не выглядит красиво и чисто.
Есть идеи, как я могу улучшить этот дизайн ... возможно, используя IoC?

7
задан user151019 14 May 2012 в 13:19
поделиться