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
scroll top