Question

Lorsque vous utilisez le modèle de stratégie, est-ce une bonne pratique de passer this à une méthode sur this.strategy?

J'ai une interface de stratégie avec un seul appel, TakeAction. L'idée est que TakeAction décide quelles des différentes actions possibles que le client doit effectuer, puis appelle la méthode appropriée sur le client. Donc, dans une stratégie concrète, le TakeAction La méthode peut ressembler:

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();
}

Et dans le client, l'appel ressemble:

this.strategy.TakeAction(this);

Est-ce une bonne forme? Ou y a-t-il une meilleure façon de le faire? (Passant en arrière une classe avec une enum décrivant l'action et les valeurs à passer par lui semblaient exagérées.)

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
scroll top