Bonjour,
Je suis actuellement en train de réaliser un projet personnel en JAVA et je bute sur un problème de conception concernant la visibilité des objets de type conteneur. Enfin je pourais avancer sans régler ce souci mais j'aurai l'impression de bacler la conception et j'aime pas trop cette idée...
Dans un programme élaboré en POO, je pense que chaque objet doit avoir une visibilité qui se limite à ses besoins et à ses droits.
Par exemple, je ne veux pas qu’un objet de type UTILISATEUR ait accès directement à un objet de type conteneur d'utilisateurs.
Mais c'est la que j'ai un problème.
Concrètement, si je veux qu'un utilisateur est la capacité à tout moment d'afficher la liste de tous les utilisateurs par le biais d'une méthode il faut que la méthode de l'objet utilisateur ait accès au conteneur.
Or si il a accès au conteneur, un objet utilisateur pourra utiliser des méthodes appartenant à la classe CONTENEUR donc capables de faire tout et n'importe quoi sur le conteneur dont des choses dont un utilisateur langda n'a pas le droit à l'origine, comme par exemple supprimer une voire toutes les occurrences du conteneur.
Donner ce type d'accès a un utilisateur facilite la conception.
Par contre, j'ai l'impression que ça favorisera la difficulté de la gestion des erreurs et des exceptions ainsi que la réutilisation des classes.
Une des solutions que j'envisage pour améliorer la conception est de créer des classes de type "service" dont chacune de ces classes auront un accès au conteneur et présenteront un ensemble de méthode susceptibles d'utiliser ce conteneur.
De cette façon, il me suffira d'ajouter un objet d'une de ces classes de type "service" à une classe type utilisateur afin de donner à l'utilisateur le droit d'accéder au conteneur mais uniquement par le biais de méthode définies dans la classe de type "service".
Je ne sais pas trop si ce type de conception est "bonne".
Si quelqu'un comprend mon problème et a une idée sur la solution à envisager, je suis tout ouie.
Cordialement,
Partager