Je construis des valeurs enum qui ont une structure de données comme les suivantes:Meilleur modèle pour la construction de cet objet?
enum MetaType {
HUMAN(
new MetaTypeAttribute(AttributeType.BODY, 1, 6),
new MetaTypeAttribute(AttributeType.AGILITY, 1, 6),
new MetaTypeAttribute(AttributeType.REACTION, 1, 6)
),
ORK(
new MetaTypeAttribute(AttributeType.BODY, 4, 9),
new MetaTypeAttribute(AttributeType.AGILITY, 1, 6),
new MetaTypeAttribute(AttributeType.REACTION, 1, 6)
);
MetaType(MetaTypeAttribute body, MetaTypeAttribute agility, MetaTypeAttribute reaction) {
}
}
Donc il y a un ENUM de metatypes; Chaque MetaType spécifie un ensemble fixe de MetaTypeAttributes, qui consiste en une valeur min et max pour cet attribut.
Je déteste cette syntaxe. C'est trop long, c'est moche, et ça ne m'empêche pas de passer dans le mauvais AttributeType (le AttributeType doit correspondre à l'ordre des arguments du constructeur de MetaType, AttributeType.BODY> body, etc.). Ce que je veux, c'est un meilleur modèle pour s'assurer qu'un objet est construit avec ce schéma exact.
Ce code est abrégé. En réalité, il y a 9 AttributeTypes.
Des suggestions d'amélioration?
Merci! J'ai fini par utiliser ce modèle. Strictement parlant, je n'ai pas besoin de l'objet MetaTypeAttribute quand je le fais de cette façon; Je stocke juste une carte qui est remplie à partir des arguments du constructeur. –
RMorrisey