Dans mon application actuelle, j'utilise une classe observable 'selfmade' pour implémenter le pattern d'observateur. Les observateurs (implémentant une interface) peuvent écouter certains événements.Où enregistrer des observateurs lors de l'utilisation de conteneurs IoC?
Je change de plus en plus du projet à l'aide d'un conteneur IoC, mais je ne trouvent pas un bon endroit dans le code pour enregistrer les observateurs avec l'observable.
Les façons de le faire que je vois sont:
A) Injecter l'observable dans l'observateur.
Le constructeur ne devrait pas effectuer de travail réel, mais même avec une injection de méthode ou de champ, cela associe l'observateur à l'observable. C'est aussi le cas si c'est l'inverse. B12) Créer une usine observable et le faire là.
Dans ce cas, la création de l'observable dépend des implémentations de plusieurs observateurs.
C) Créez les observateurs par usine et faites-le là.
Alors que cela me semble le mieux concernant le couplage, il s'avère mauvais concernant DRY. Dans certains cas, l'usine finit par être une copie des champs et constructeur de l'observateur, plus l'observable et plus la ligne d'un code pour l'enregistrement.
Existe-t-il un moyen de gérer cette inscription de manière propre? Si non, y a-t-il des arguments convaincants pour utiliser un certain chemin par rapport aux autres?