Какой правильный способ замены блока переключателя и Enum в этой ситуации (C #)?

Если это поможет, следующий вопрос в контексте игры, которую я строю.

В нескольких разных местах у меня есть следующий сценарий. Существует родительский класс, для этого примера называется навыком, и у меня есть ряд подкласс, реализующих методы из родительского класса. Также существует еще один родительский класс, который мы позвоним призванию. Навыки должны быть перечислены в разных подклассах призвания. Тем не менее, эти навыки должны быть доступны для чего-либо в игре, которая использует любое данное призвание.

Моя текущая настройка состоит в том, чтобы иметь enum под названием Skutify.id, чтобы призвание содержало коллекцию значений от этого enum, и когда сущность в игре берет на себя этот призвание, в котором входит сбор в другой класс, называемый Skillctistory. Skill.id нуждается в новой записи каждый раз, когда я создаю новый подкласс навыка, а также случай в блоке коммутатора для новых конструкторов подкласса.

I.E.:

//Skill.Id
Enum{FireSkill,WaterSkill,etc}

//SkillFactory
public static Skill Create(Skill.Id id)
{
    switch(id)
    {
        case Skill.Id.FireSkill:
             return new FireSkill();
        //etc
    }
}

Это отлично работает, но с использованием блока переключения и переключения, как и между чувствительными, как больше накладки, чем мне нужно решить эту проблему. Есть ли более элегантный способ создания экземпляров этих классов навыков, но все же позволяет призванию содержит коллекцию, определяющую навыки, которые он может использовать?

Отредактировать: я в порядке, выбрасывающую enum и связанный блок переключателя, так долго Поскольку призвание может содержать коллекцию, которая позволяет произвольно призвать подклады навыков.

5
задан XBigTK13X 9 September 2011 в 00:11
поделиться