Va bene passare il client concreto a un metodo sulla strategia concreta?
https://softwareengineering.stackexchange.com/questions/124616
-
03-11-2019 - |
Domanda
Quando si utilizza il modello di strategia, è una buona pratica passare this
a un metodo su this.strategy
?
Ho un'interfaccia strategica con una chiamata, TakeAction
. L'idea è che il takeaction decida quale delle diverse possibili azioni il cliente dovrebbe eseguire e quindi chiama il metodo appropriato sul cliente. Quindi in una strategia concreta, il TakeAction
Il metodo potrebbe sembrare:
void TakeAction(IAbstractClient client)
{
if (client.IsBlah()) client.UnBlah(this.BlahValue1, this.BlahValue2);
else if (client.CanFoo()) client.Foo(this.FooValue);
else if (this.ShouldTwiddle()) client.Twiddle();
}
E nel cliente, la chiamata sembra:
this.strategy.TakeAction(this);
Questa è una buona forma? O c'è un modo migliore per farlo? (Trasmettere una classe con un enum che descriveva l'azione e i valori da passare sembravano eccessivi.)
Nessuna soluzione corretta
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a softwareengineering.stackexchange