Допустим, я создаю спортивную игру, и в этой игре есть различные позиции, на которые игрок может играть, атаковать, защищать и т. Д. Поэтому я начну с создания базового класса:
public abstract class Position
{
public abstract string Name
{
get;
}
}
иподклассы ...
public class Defender : Position
{
public override string Name
{
get { return "Defender"; }
}
}
и так далее.Это все нормально.
Но теперь мне нужна функция для создания этих объектов.Мне нужна функция создания по позиции.Поэтому одним из возможных решений является создание перечисления всех позиций и передача этого значения в функцию, которая включает перечисление и возвращает соответствующий объект.Но это вызывает мой запах запаха.Эта душа связывает воедино классы, перечисление и переключатель внутри функции:
public static Position GetByType(Types position)
{
switch(position)
{
case Types.Defender:
return new Defender();
... and further terrible code
Какое решение мне следует искать?Какой это шаблон дизайна?