我基本上试图实现一个策略模式,但我想将不同的参数传递给“接口”实现(从同一对象继承)并且不知道是否这个有可能。也许我选择了错误的花样,我得到类似于接口(C#)中具有不同参数的策略模式
“StrategyA”的错误不会实现继承的抽象成员“无效DoSomething的(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这样一个常见的场景,我已经看到了实现这里的obj持续增长和不断增长的... – 2010-12-02 19:56:32
使用的接口,而不是类 如 公共接口 { 无效DoSomething的(BaseObject对象); } 然后让策略继承那个接口。 将您的SP基于Interface或从此接口继承的IStrategy接口。顺便说一句,使用DIP注入与IoC像Ninject – GregJF 2017-05-12 01:45:18