J'essaie essentiellement de mettre en œuvre un modèle de stratégie, mais je veux passer différents paramètres à la mise en œuvre des « interfaces » (qui héritent du même objet) et ne sais pas si c'est possible. Peut-être que je choisis le modèle mal, je reçois une erreur semblable àModèle de stratégie avec des paramètres différents dans l'interface (C#)
'StrategyA' fait avec le code ci-dessous
membre abstrait implémente pas hérité 'DoSomething void (BaseObject)':
abstract class Strategy
{
public abstract void DoSomething(BaseObject object);
}
class StrategyA : Strategy
{
public override void DoSomething(ObjectA objectA)
{
// . . .
}
}
class StrategyB : Strategy
{
public override void DoSomething(ObjectB objectB)
{
// . . .
}
}
abstract class BaseObject
{
}
class ObjectA : BaseObject
{
// add to BaseObject
}
class ObjectB : BaseObject
{
// add to BaseObject
}
class Context
{
private Strategy _strategy;
// Constructor
public Context(Strategy strategy)
{
this._strategy = strategy;
}
// i may lose addtions to BaseObject doing this "downcasting" anyways?
public void ContextInterface(BaseObject obj)
{
_strategy.DoSomething(obj);
}
}
+1 un tel scénario commun, j'ai vu des implémentations où obj ne cesse de croître et de plus en plus ... –
Utiliser les interfaces des classes au lieu par exemple interface publique { void doSomething (objet BaseObject); } Ensuite, la stratégie héritera de cette interface. Basez votre SP autour de l'interface ou d'une inteface IStrategy qui hérite de cette interface.BTW utiliser DIP pour injection avec un IoC comme Ninject – GregJF