我有2个类具有完全相同的逻辑/工作流,除了一种方法。
因此,我创建了一个抽象基类,其中不同的方法被声明为抽象。
下面是一些示例代码,用于演示我的设计;任何人都可以就更好的方法提出建议,还是我朝着正确的方向前进 我没有使用接口,因为派生类B和C字面上共享大部分逻辑。有没有更好的方法通过依赖注入来完成我在下面做的事情?
public abstract class A
{
public void StageData()
{
// some logic
DoSomething();
}
public void TransformData();
public abstract DoSomething();
}
public class B : A
{
public override void DoSomething()
{
// Do Something!
}
}
public class C : A
{
public override void DoSomething()
{
// Do Something!
}
}
答案 0 :(得分:3)
你所做的一切都没有错。在这个设计中引入依赖注入将是混乱和过度的 - 你必须传递一个委托:
public class ABC
{
public ABC(Action z)
{
_doSomethingAction = z;
}
public void DoSomething()
{
_doSomthingAction.Invoke();
}
private Action _doSomthingAction;
}
您想要使用此方法的原因很少 - 如果您需要执行回调,则会出现这种情况。所以坚持你所拥有的模式,不要试图过度复杂化。