Мне нужно обработать список записей, возвращаемых службой.
Однако алгоритм обработки записи полностью меняется в зависимости от определенного поля записи.
Чтобы реализовать это, я определил интерфейс 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?