我需要处理从服务返回的记录列表。
但是,记录的处理算法会根据记录上的某个字段完全改变。
为了实现这一点,我定义了一个只有一个方法的 IProcessor 接口:
public interface IProcessor
{
ICollection<OutputEntity> Process(ICollection<InputEntity>> entities);
}
IProcessor
对于不同类型的处理,我有两个具体的实现。
问题是我需要同时使用所有实现IProcessor
..所以我如何将它注入IProcessor
到我的引擎类中来驱动整个事情:
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?