Frage

Mein c ++ SOA Anwendung hat ein Konzept der „Sitzung“, die den Austausch von Daten zwischen den Diensten verwendet wird. In Beispiel seine zur Überprüfung Rechtmäßigkeit einiger Service A-Operationen verwendet, bevor Sitzung B ausgeführt wird, die oder Rollback Änderungen verpflichtet. Wie auch immer.

Ich habe 2 Arten von Session-Modi: Normal und Was-wäre-wenn. Weiter zu gehen, habe ich andere Sitzung, Sitzung für Legalität, Sitzung für assign, Sitzung für begehen usw. Dies ist ein Hauptproblem ist. Legalität Sitzung kann das sein, was-wäre-wenn oder reale etc.

Wie zu beheben, dass und Code-Duplizierung vermeiden?

Ich kann einen machen ISessionFactory Schnittstelle und habe WhatIfFactory und RealFactory es umzusetzen. Dann könnte ich eine ILegalitySession und machen WhatIfLegalitySession und RealLegalitySession es umzusetzen. Dann meine Fabriken würden geeignete Objekte zurück.

Es verfügt über 2 große Probleme. Was passiert, wenn neue Modus wird kommen? Ich muss neue Fabrik und neue Klassen für alle Sitzungen implementieren! Was passiert, wenn neue Session-Typ kommt? Ich habe beiden Fabriken ändern ...

Vielleicht von 2 hierarhies zurücktreten und haben whatif Sitzungen echte Session „dekorieren“? Wie kann ich lokalisieren die Änderung?

War es hilfreich?

Lösung

Versuchen Sie WhatIf mit Dekorateure zu implementieren. Oder extrahieren einige ‚was wäre wenn‘ bestimmte Teile Art von Strategie.

Eine weitere Option ist mit der staatlichen Muster. 'WhatIf' Zustand und 'Real' Zustand.

Andere Tipps

Ich denke, die Dekorateur Muster rel="nofollow hier Sinn macht. Sie könnten auch an der Strategie Muster und seine Kompilierung-Cousin richtlinienbasierte Design . Es ist schwer zu sagen, welche am besten ohne weitere Informationen. Dekorateure sind für das Hinzufügen zusätzlicher Verhalten, die beiden anderen für bestehende Verhalten zu ändern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top