统一IOC和工厂模式在一个大循环内



我想在我的应用程序中使用工厂模式,在那里我收到一个巨大的(500k)对象列表,比如list,然后我循环通过它,现在其中一个属性(SeatType)决定处理该列表的类,所以如果座位类型是高级的,它将由不同的类处理,类似地用于经济等…

class Bus
{
public SeatType Type { get; set; }
}

既然检查座椅类型并因此找到处理器是在循环中进行的,那么解决/找到必须处理该总线的属性实例的最佳方法是什么?

我知道我可以按座位类型对列表进行分组,然后进行处理,但我很想知道是否有更好的方法可以做到这一点,而不需要分组,只使用循环。

提前感谢!!!

编辑:

在我的情况下,我需要类似第5级的处理器,例如在for循环中,我调用ClassA.MethodA,然后MethodA调用ClassB.MethodB,以此类推,直到ClassE.MethodE.

我需要ClassE中的处理器,它在循环中是4级的,不想把处理器的字典从ClassA传递到ClassB等等

请帮忙!

我会使用一个Dictionary,它在SeatType和处理类之间有一个映射。在每次迭代中,我从Dictionary中获取正确的处理器。

例如

Dictionary<SteatType, IProcessor> processors = new Dictionary<SteatType, IProcessor>();
for (int i = 0; i < buses.Length; i++)
{
Bus b = buses[i];
IProcessor p = processors[b];
// p.process(b);
}

如果您不想将processors从类A传递到类E,您可以创建一个Helper类,它是一个单例并包含processors。因此,在每个级别上,您都可以为特定的处理器调用singleton。

或者,当可能的时候,我认为看起来更好的是,在AE的五个类的构造函数中注入processors,这样甚至可以在不同的级别上使用不同的processorDictionaries;)

最新更新