我基本上試圖實現一個策略模式,但我想將不同的參數傳遞給「接口」實現(從同一對象繼承)並且不知道是否這個有可能。也許我選擇了錯誤的花樣,我得到類似於接口(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