类工厂使用类型列表和静态多态

时间:2015-09-24 14:23:59

标签: c# .net types polymorphism

我正在尝试创建一个使用类类型列表的类工厂,调用重写方法来查找与条件匹配的类,然后返回"匹配"的实例。类。我目前正在使用类实例列表,这是好的,但使用类型似乎更干净。否则,我们每次实际使用该类时都需要重新初始化实例,以便清理"内部工作变量。多态性是否适用于静态方法和类型?我经常使用多态,但之前没想过以这种方式接近它。

我简化的当前代码是这样的:

public static List<RatingEngineBase> RatingEngineList = new List<RatingEngineBase>();
RatingEngineList.Add(new RE_PPL_DTNA_Cleveland_ATT());
RatingEngineList.Add(new RE_PPL_DTNA_Cleveland_Coldiron());
RatingEngineList.Add(new RE_PPL_DTNA_Cleveland_Prestige());
RatingEngineList.Add(new RE_PPL_DTNA_MtHolly_ATT());
foreach(RatingEngineBase RatingEngine in RatingEngineList)
{
    if (RatingEngine.OrderItemToRatePathMatch(anOrderItemToRate))
    {
        RatingEngine.OrderItemToRate = anOrderItemToRate;
        return RatingEngine;
    }
}

但我觉得如果我能做的话会更清洁:

public static List<typeof(RatingEngineBase)> RatingEngineTypeList = new List<typeof(RatingEngineBase));
RatingEngineTypeList.Add(typeof(RE_PPL_DTNA_Cleveland_ATT));
RatingEngineTypeList.Add(typeof(RE_PPL_DTNA_Cleveland_Coldiron));
RatingEngineTypeList.Add(typeof(RE_PPL_DTNA_Cleveland_Prestige));
RatingEngineTypeList.Add(typeof(RE_PPL_DTNA_MtHolly_ATT));

然后遍历类型列表,调用重写的静态OrderItemToRatePathMatch,然后创建并返回匹配的实例。

希望这有助于解释我的问题。

0 个答案:

没有答案