我需要处理从服务返回的记录列表。
然而,根据记录上某个特定字段的不同,记录的处理算法会完全改变。
为了实现这一点,我定义了一个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?