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 ...