Quando usi lo schema di strategia, è buona norma passare this
a un metodo su this.strategy
?
Ho un'interfaccia di strategia con una chiamata, TakeAction
. L'idea è che TakeAction decida quali tra le diverse azioni possibili eseguite dal Cliente e poi chiama il metodo appropriato sul client. Pertanto, in una strategia concreta, il metodo TakeAction
potrebbe essere simile a:
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 client, la chiamata assomiglia a:
this.strategy.TakeAction(this);
Questa è una buona forma? O c'è un modo migliore per farlo? (Restituire una classe con un enum che descrive l'azione e i valori da passare ad esso sembrava eccessivo).