大循环内的Unity IOC和工厂模式
Unity IOC and Factory pattern inside a large loop
我想在我的应用程序中使用工厂模式,我收到一个巨大的(500k)列表,假设对象列表,我循环遍历它,现在 属性(SeatType) 之一决定哪个class 来处理该列表,因此如果座位类型是高级座位,则由不同的 class 处理,经济舱等也类似...
class Bus
{
public SeatType Type { get; set; }
}
由于检查座位类型并因此发现处理器发生在循环内部,因此 resolve/find 必须处理该总线的 属性 实例的最佳方法是什么?
我知道我可以按座位类型对列表进行分组,然后对其进行处理,但我很想知道是否有更好的方法可以在不分组的情况下仅使用循环来完成此操作。
提前致谢!!!
编辑:
就我而言,我需要 5 级处理器,例如在 for 循环中我调用 ClassA.MethodA 然后 MethodA 调用 ClassB.MethodB 等等直到 ClassE.MethodE.
我需要 ClassE 中的处理器,它在循环内是 4 级,并且不想将处理器字典从 ClassA 传递到 ClassB 等等。
请帮忙!
我会使用 Dictionary
,它在 SeatType
和处理 class 之间有一个映射。在每次迭代中,我从 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
从 class A
传递到 class E
,您可以创建一个 Helper
class 这是一个单例并包含 processors
。因此,在每个级别上,您都可以为特定处理器调用单例。
或者也许当我认为看起来更好的可能时,您将 processors
从五个 classes A
到 E
的构造函数中注入,所以它甚至可以在不同级别上使用不同的 processor
Dictionaries
;)
我想在我的应用程序中使用工厂模式,我收到一个巨大的(500k)列表,假设对象列表,我循环遍历它,现在 属性(SeatType) 之一决定哪个class 来处理该列表,因此如果座位类型是高级座位,则由不同的 class 处理,经济舱等也类似...
class Bus
{
public SeatType Type { get; set; }
}
由于检查座位类型并因此发现处理器发生在循环内部,因此 resolve/find 必须处理该总线的 属性 实例的最佳方法是什么?
我知道我可以按座位类型对列表进行分组,然后对其进行处理,但我很想知道是否有更好的方法可以在不分组的情况下仅使用循环来完成此操作。
提前致谢!!!
编辑:
就我而言,我需要 5 级处理器,例如在 for 循环中我调用 ClassA.MethodA 然后 MethodA 调用 ClassB.MethodB 等等直到 ClassE.MethodE.
我需要 ClassE 中的处理器,它在循环内是 4 级,并且不想将处理器字典从 ClassA 传递到 ClassB 等等。
请帮忙!
我会使用 Dictionary
,它在 SeatType
和处理 class 之间有一个映射。在每次迭代中,我从 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
从 class A
传递到 class E
,您可以创建一个 Helper
class 这是一个单例并包含 processors
。因此,在每个级别上,您都可以为特定处理器调用单例。
或者也许当我认为看起来更好的可能时,您将 processors
从五个 classes A
到 E
的构造函数中注入,所以它甚至可以在不同级别上使用不同的 processor
Dictionaries
;)