Schnell und simpel ja, allerdings hat man nicht die gesamte Vereinbarung (wie hier mit einem externen System) in einem Objekt gekapselt
In dem speziellen Fall, den ich gerade vor mir habe, kenne ich die Werte schon vorher, muss sie also nicht dynamisch aus der externen Datenquelle zuordnen. Ich muss aber sehr wohl diese Werte einhalten, wenn ich die Daten interpretiere bzw. abspeichere.
In meinem Beispiel gibt es auch keine externe Datenquelle, von daher sehe ich das jetzt mal nicht als Gegenargument.
Und YAGNI verletze ich damit auch nicht, denn die Klasse macht nur das, was von ihr aktuell gefordert wird:
- Nur die vorgegebenen Werte zulassen
- Alle möglichen Werte für eine Auswahl (ComboBox) einfach vorhalten
Bei der Benutzung der Klasse ist ein großer Teil des Drumherums nur dafür da, dass die vorgehaltenen Instanzen nicht von aussen aus Versehen freigegeben werden können und somit die Benutzung intuitiv erfolgen kann ohne sich einen Kopf machen zu müssen (mit ARC würde die Klasse wesentlich kompakter aussehen).
Zudem ist eben die
gesamte Vereinbarung enthalten (Interpretation des externen Systems über Integer, Bedeutung für Programmierer/Benutzer als Eigenschaftsname bzw. String) und nicht auf mehrere Stellen verteilt und zur Darstellung benötige ich keine weiteren Hilfsroutinen um z.B. zu einem Integer/Enum einen aussagekräftigen Text zu bekommen. Denn dass 0 hier Hund bedeutet gibt das externe System vor, und dann doch besser an einer Stelle definieren.