Lorsque vous utilisez une abstraction d'interface utilisateur, les données que vous affichez sont protégées contre les modifications d'implémentation dans la couche d'interface utilisateur. Est-ce que/devrait/peut-il s'étendre à des choses de niveau supérieur, comme par exemple, afficher en tant qu'arbre ou en tant que grille? Je ne sais pas comment isoler l'abstraction des détails de plus haut niveau sur la façon dont l'interface utilisateur va afficher les données collectées à travers cette abstraction.Utilisation de l'abstraction de l'interface utilisateur
Répondre
Vous voulez commencer par l'architecture Model-View-Controller. Cela vous permet d'isoler, autant que possible, votre interface utilisateur des changements de données. La couche Modèle est vos objets de données. Le calque Vue est vos composants Swing réels. Le calque Controller est vos auditeurs. La couche Modèle est écrite indépendamment des deux autres, sans aucune connaissance des classes. Le calque Vue est écrit sans aucune connaissance de la couche Contrôleur.
Si vous avez besoin de plus d'abstraction, vous pouvez créer des interfaces pour votre couche Modèle afin que plusieurs modèles de données différents puissent tous utiliser la même interface. De cette façon, peu importe les données que vous donnez au calque View, il s'affiche simplement à l'aide de l'interface.
Sachez également qu'il n'est pas toujours possible de faire ce que vous demandez. Parfois, une interface utilisateur doit être écrite spécifiquement pour les données affichées. Un arbre n'est pas toujours un arbre, et une grille n'est pas toujours une grille. Cela fonctionne bien pour personnaliser le calque Vue pour qu'il corresponde aux données affichées. De cette façon, vous pouvez adapter la fonctionnalité spécifiquement aux données manipulées et créer une meilleure interface pour vos utilisateurs.
Certainement, cependant, cela devrait être fait là où c'est logique. C'est là que l'expérience et le jugement jouent un grand rôle.