nous avons une structure hiérarchique où chaque noeud est dérivé d'une classe de base noeud public Node(INodeFactory nodeFactory)
L'usine est injecté de sorte que le noeud peut créer ses nœuds enfants à l'aide à un moment plus tard Get(int id)
devrait créer toujours une usine un nouvel objet
certains nœuds nécessitent une référence à un autre nœud de la structure. Les informations nécessaires pour obtenir la référence peuvent changer au moment de l'exécution et ne sont pas nécessairement disponibles lorsque l'objet de noeud a été construit. Fondamentalement, cette signature de méthode est la même et est Get(int id)
. Cette fois, aucun nouvel objet ne devrait être créé, mais un objet existant devrait être retourné.
Notre première tentative a été de passer un INodeLocator
qui rechercherait le nœud. Tout d'abord, nous ne sommes pas sûrs que 'locator' soit un bon nom et s'il nous manque un motif ici, peut-être le motif du dépôt (mais seulement pour rechercher?). Deuxièmement, nous avons remarqué que la signature de la méthode est la même.
Nous envisagions de basculer l'usine du mode «création» au mode «recherche» après la création de l'arborescence initiale, mais cela ne fonctionnera pas puisque les nœuds doivent également être créés ultérieurement. Pour la logique du 'locator', nous avons envisagé de rechercher (itérer) à travers les nœuds, mais peut-être vaut-il mieux les suivre dans un dictionnaire plat. Mais alors le problème se pose que l'usine peut ajouter au dictionnaire mais ne gère pas la durée de vie. Que devrait-il se passer lorsqu'un noeud est supprimé?
Comment pouvons-nous concevoir ce problème correctement?
ce n'est pas le bon endroit pour votre question passer à softwareengineering.stackexchange.com –
Après avoir lu https://meta.stackoverflow.com/questions/254570/choosing-between-stack-overflow-and-software-engineering I pense que tu as probablement raison. Je n'ai jamais posté là-bas. Cela devrait-il alors être supprimé? –
Je pense qu'il devrait être supprimé. même si c'est une bonne question et si vous regardez softwareengineering.stackexchange.com vous n'avez pas l'option de fermeture –