J'essaie de réécrire du code pour résoudre certains problèmes de couplage et faciliter les modifications ultérieures.Modèle pour lequel un seul gestionnaire devrait agir en fonction de la spécialisation
En ce moment, j'ai une méthode statique usine dans une classe de base qui, en fonction de la situation, prend une appropriée mise en œuvre. La décision est basée sur les diplômes de spécialisation :
Bien que les types A et B les deux peuvent gérer cela, B a été conçu spécifiquement pour cette situation et est le bon choix.
La classe de base est donc couplé intimement avec toutes les implémentations et cette méthode doit être réécrite lorsque de nouvelles implémentations spécialisées sont créées.
Je songe à utiliser le modèle Chain of Responsibility pour rompre ce couplage. Cependant, je ne peux pas voir un moyen de s'assurer que l'implémentation la plus qualifiée s'exécute. Si je le cède aux implémentations pour faire cette détermination, je ne peux pas garantir qu'elles seront interrogées dans l'ordre de spécialisation sans rencontrer les mêmes problèmes de couplage.
Existe-t-il des modèles ou des méthodes pour gérer des situations comme celle-ci? (Ma meilleure estimation entraverait le déploiement, je vais le garder dans ma poche arrière de peur que tout le monde dise "oui, c'est la seule façon de le faire!")
Ce n'est qu'une partie de la solution. La partie la plus facile, malheureusement. Comment quantifier leur capacité à gérer une situation sans connaître leur implémentation et ensuite la comparer avec les capacités d'autres implémentations sans connaître toutes les situations et variables possibles à l'avance est la partie collante. – Will
@Will: Je vois le coeur de votre question. Vous essayez de déterminer comment bouillir "peut gérer cette situation" jusqu'à une valeur numérique qui peut être associée à chaque mise en œuvre. Je demande en réponse: quel problème vous résolvez qui nécessite ce mécanisme? –
Je voudrais pouvoir le réduire à un certain nombre! Sans entrer dans les détails, j'essaie d'interagir avec différentes fenêtres. Je dois gérer, disons, les fenêtres IE différemment que, par exemple, les fenêtres d'applet Java. Et si aucun ne s'applique, alors comme une vieille fenêtre Win32 simple. Plus je connais une fenêtre (ce qui est un processus complexe dépendant du type de fenêtre), mieux je peux le gérer. Il peut éventuellement s'étendre à l'application qui possède la fenêtre. Je ne peux pas rester en dehors du processus et choisir le meilleur gestionnaire sauf si je sais quel type de fenêtre, et cette connaissance est liée dans le gestionnaire. – Will