Dynamiczne odwzorowanie wartości wyliczeniowej (int) na typ

Okazało się, że ten problem jest dość powszechny w naszej pracy.

Przesyłamy wartość int lub enum przez sieć, a następnie ją otrzymujemy chcielibyśmy utworzyć / wywołać konkretny obiekt / funkcję.

Najprostszym rozwiązaniem byłoby użycie instrukcji switch, jak poniżej:

switch (value) {
    case FANCY_TYPE_VALUE: return new FancyType();
}

Działa dobrze, ale mielibyśmy mnóstwo tych bloków przełączników, a gdy tworzymy nową wartość i typ, musielibyśmy zmienić wszystkie z nich. To wydaje się właściwe.

Inną możliwością byłoby użycie szablonów. Ale nie możemy, ponieważ wartość enum jest zdefiniowana w czasie wykonywania.

Czy jest jakiś prawidłowy wzór do tego lub jakikolwiek właściwy sposób?

Wydaje się, że jest to bardzo ogólny i powszechny problem w codziennym kodowaniu ...

questionAnswers(4)

yourAnswerToTheQuestion