-
composite ou collection
Bonjour,
Je débute dans l'utilisation des designs patterns. J'aimerai les utiliser pour décrire un objet étagère dans lequel sont entreposés des objets boites dans lesquelles on trouve des objets pièces. Javai pensé au modèle composite mais je ne suis pas entièrement convaincu, je ne vois pas le lien d'héritage entre pièce et étagère.
D'autre part, je dois pouvoir faire des recherches dans étagères et dans boites là je suis pratiquement sure que je dois utiliser le pattern visiteur.
J'aimerai avoir votre avis.
merci
-
Bonjour,
Est-ce que vous essayez d'implémenter des design patterns en créant un problème, ou de résoudre un problème à l'aide de design patterns?
Parce que je pense que pour le problème que vous décrivez, il n'y a aucun besoin de design pattern.
La classe Boite possède une liste d'objets de type Pieces.
La classe Etagère possède une liste d'objets de type Boite (plus éventuellement une liste de pièce qui ne sont pas dans des boites).
La classe Boite implémente une méthode getPieces(), donc le contenu est trivial.
La classe Etagère implémente une méthode getPieces(), qui va aggréger les pièces des boites (plus éventuellement les pièces directement dans l'étagère) et retourner le résultat.
Si vous souhaitez utiliser le pattern composite, il faudra sacrifier la sémantique et considérer qu'une étagère puisse être contenue dans une autre étagère ou dans une boite :).
Par contre effectivement, piece ne rentre pas dans le pattern composite.
Cette classe a un rôle totalement différent de Boite et Etagère.
Concernant le pattern Visiteur, il peut être utilisé.
Cependant il répond à un problème qui ne se présente pas réellement dans votre cas.
Il existe des solutions plus simples pour votre problème actuel : La solution indiquée plus haut, on peut aussi envisager une classe ConteneurDePièces dont seraient dérivées les classes Etagère et Boite.