Question

J'essaie d'éviter de créer un classe de monstre, et j'ai remarqué un schéma pas si bon et j'étais curieux de savoir si quelqu'un avait une idée de ce problème.

Problème

A est complexe.Pour éviter "l'objet dieu", une partie de la logique est repoussée dans B et C.

A sert maintenant de façade.Cela dépend de B et C.

A -> B
  -> C

Cependant, A possède des données de configuration dont B et C ont besoin.Nous devons donc garder les données synchronisées.

b.value1 = a.value1
b.value2 = a.value2

c.value1 = a.value1
c.value2 = a.value2

De plus, B et C doivent convertir les données pour les utiliser.

b.sum -> b.value1 + b.value2
b.doSomething -> b.sum() ...

c.sum -> c.value1 + c.value2
c.doSomethingElse -> c.sum() ...

Pour éviter d'écrire du code en double, nous replaçons ces méthodes de conversion vers A.

a.sum -> a.value1 + a.value2

b.doSomething -> a.sum() ...
c.doSomethingElse -> a.sum() ...

Mais cela signifie que B et C dépendent désormais de A, et pas seulement de ses données.

A -> B -> A
  -> C -> A

Et cela se traduit par une dépendance circulaire.

J'ai étudié l'injection de dépendances et le modèle d'usine, et ces deux idées ont résolu beaucoup de problèmes, mais je ne sais pas comment créer un graphe d'objet dont les nœuds sont configurables au moment de l'exécution.En d’autres termes, j’ai besoin de pouvoir modifier le comportement d’un nœud ou d’un groupe de nœuds spécifique au moment de l’exécution depuis l’extérieur.Quelle est la meilleure façon de propager l’état de configuration dans un graphe d’objets ?

Modifier

Après avoir passé les dernières heures à essayer de formuler mes pensées sous forme de question, je pense que je suis peut-être tombé sur une solution.Je pense que ce que je dois faire est de créer une classe de fournisseur de configuration D qui est transmis aux nœuds qui dépendent de ces informations.

A -> B -> D
  -> C -> D
  -> D

D gère value1 et value2 et fournit le sum méthode.D a également des événements qui se déclenchent lorsque value1 et value2 changent afin que les nœuds dépendants (A, B et C) puissent répondre au changement.

Je pense que cette solution fonctionne, mais je voulais quand même publier au cas où il existerait une meilleure solution.Si ce est le modèle que je recherche, comment s'appelle-t-il ?Le modèle « fournisseur » ?(À ne pas confondre avec ASP.NET modèle de fournisseur!)

Était-ce utile?

La solution

recherchez-vous un modèle d'observateur ou de médiateur.vérifiez-le sur http://sourcemaking.com/design_patterns/observer

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top