Question

Mon application SOA c ++ utilise le concept de "session". qui est utilisé échanger des données entre les services. Par exemple, il est utilisé pour vérifier la légalité de certaines opérations du service A avant d'exécuter la session B, qui valide ou annule les modifications. Peu importe.

J'ai 2 types de modes de session: normal et what-if. Pour aller plus loin, j'ai une session différente, session pour la légalité, session pour assigner, session pour commettre, etc. C'est un problème principal. La session de légalité peut être hypothétique ou réelle.

Comment résoudre ce problème et éviter la duplication de code?

Je peux créer une interface ISessionFactory et le faire mettre en place par WhatIfFactory et RealFactory . Ensuite, je pourrais faire une ILegalitySession et faire en sorte que WhatIfLegalitySession et RealLegalitySession le mettent en œuvre. Ensuite, mes usines retourneraient les objets appropriés.

Il a 2 problèmes majeurs. Et si un nouveau mode viendrait? Je vais devoir mettre en place une nouvelle usine et de nouvelles classes pour toutes les sessions! Que faire si un nouveau type de session arrive? Je dois changer les deux usines ...

Peut-être démissionner de deux hiérarchies et avoir des sessions whatIf "décorer" " vraie session? Comment localiser le changement?

Était-ce utile?

La solution

Essayez d’implémenter votre WhatIf avec des décorateurs. Vous pouvez également extraire des éléments spécifiques de types de stratégie.

Une autre option consiste à utiliser le modèle d'état. Etat "WhatIf" et "Real".

Autres conseils

Je pense que le motif de décorateur a du sens ici. Vous voudrez peut-être également consulter le modèle de stratégie et son cousin au moment de la compilation, conception basée sur des règles . Il est difficile de dire quel est le meilleur sans plus d'informations. Les décorateurs sont parfaits pour ajouter un comportement supplémentaire, les deux autres pour modifier le comportement existant.

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