Ergebnis der ausgeführten Methode im Befehlsmuster erhalten

8

Momentan versuche ich, ein Transaction Script-Muster zu implementieren (Genau wie Martin Fowler beschrieben hat, indem er Befehlsmuster ) in einem einfachen Testprojekt, alles funktioniert gut, das Problem ist, wo ich nicht weiß, wie Ergebnis (e) erhalten, wenn die angegebene Methode in einer konkreten Klasse ausgeführt wird, die von der ICommand-Schnittstelle übernommen wird.

Lassen Sie uns einen Code zeigen, um zu klären, welche Funktionalität ich habe. Ich habe eine einfache CalculateSalaryCommand-Klasse, die von der ICommand-Schnittstelle

geerbt wurde %Vor%

und eine einfache Transaction Script-Klasse namens CalculateSalaryTS

%Vor%

Wie Sie sehen können Übergeben Sie die Instanz der konkreten Befehlsklasse, dann führe ich innerhalb der Execute-Methode eine Operation von dieser Instanz aus. Nun, alles sieht einfach gut aus. aber es gibt ein Problem, das ich nicht das Ergebnis der ausgeführten Methode zurückgeben kann, die eine ganze Zahl sein sollte. Um dieses Problem zu beheben, habe ich beschlossen, dem Transaction Script-Layer Code hinzuzufügen, den jede Transaktion von einer allgemeinen ITransactionResult -Schnittstelle erben sollte, die wie folgt aussieht:

%Vor%

Dann wurde CalculateSalaryTS Klasse wie folgt:

%Vor%

Verwendung:

%Vor%

Ich weiß, dass dieser Weg seine eigenen Grenzen hat, aber ich habe keine Wahl, bis Sie mir eine andere Idee geben, um mit dieser Situation fertig zu werden.

Vielen Dank im Voraus.

    
saber 14.01.2012, 14:39
quelle

2 Antworten

18

Wenn Sie das Ergebnis sofort nach der Ausführung des Befehls benötigen, können Sie das Ergebnis im Befehlsobjekt speichern:

%Vor%     
Dennis Traub 14.01.2012, 15:12
quelle
4

Ich glaube, Sie suchen nach einem Befehlsmuster, das Ergebnisse zurückgeben kann.

so,

%Vor%     
Manish Basantani 14.01.2012 14:48
quelle