J'ai un code où le modèle contient certaines classes comme (vb.net pseudocode, mais pourrait être une langue OO):Éviter la sélection sous-type dans le code de vue
Enum AttributeType
Boolean
Date
String
End Enum
MustInherit Class Attibute
Must Override Function Type As AttributeType
End Class
Class BooleanAttribute: Attribute
Function Type As AttributeType
Return AttributeType.Boolean
End Function
End Class
Et la vue contient un code comme :
Select Case AttributeType
Case Boolean
//Display checkbox control
Case Date
//Display date picker control
Case String
//Display textbox control
End Select
Je ne aime pas vraiment le code dans la vue, pour les raisons évidentes, espérons- (ce qui se passe quand je reçois un nouveau type d'attribut, etc.). Ma question est, comment devrait je le remplacer?
Je pourrais facilement ajouter une méthode aux classes concrètes, mais cela pollue le modèle avec des trucs d'interface utilisateur, donc c'est une idée horrible.
Je pourrais déplacer le select dans une usine, mais cela semble juste cacher le problème .
Quelqu'un peut-il conseiller une meilleure approche?