Я новичок в разработке шаблонов и, следовательно, имею ограниченные знания о том, что все доступно.Надеюсь, я смогу дать некоторые подробности о проблеме, которую пытаюсь решить, и сообщество пользователей может дать некоторые рекомендации о том, какой шаблон проектирования использовать и как его следует реализовать.
- Возвращаемый объект одинаков для всех типов вызовов
- Базовые реализации классов могут быть выполнены для определенных типов перечислений (т. Е. ActionType = 1 отлично работает с ActionClass1, но не с ActionClass2 и ActionClass3
- Параметры класса варьируются в зависимости от типа
Например:
public enum ActionType
{
Action1,
Action2,
Action3
}
Возможная реализация фабричного шаблона:
public static class ActionClass
{
public static int DoAction(ActionType type, int val1, int val2)
{
switch (type)
{
case Type1:
return new ActionClass1(val1, val2).DoAction();
break;
default:
throw new NotImplementedException();
}
}
public static int DoAction(ActionType type, string val1)
{
switch (type)
{
case Type2:
return new ActionClass2(val1).DoAction();
break;
case Type3:
return new ActionClass3(val1).DoAction();
default:
throw new NotImplementedException();
}
}
}