dav*_*avy 3 c# oop design-patterns interface
我正在使用一些遗留代码并拥有此现有界面:
public interface IProcess
{
IDTO Process(IDTO request);
}
Run Code Online (Sandbox Code Playgroud)
然后有一个工厂有一个巨大的switch语句返回实现接口的对象(其中17个).创建的对象然后调用进程,如:
return xProcess.Process(requestDTO);
Run Code Online (Sandbox Code Playgroud)
我的问题是我现在需要更改其中的一些以传递第二个参数,如:
xProcess.Process(requestDTO, Id);
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种优雅的方式来实现这一目标.
我试过让接口成为一个抽象类,如:
public abstract class IProcess
{
public virtual IDTO Process(IDTO request)
{
return null;
}
public virtual IDTO Process(IDTO request, int Id)
{
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
这允许我在创建的类中重写Process方法,但是我有一个问题,即IProcess由另一个接口继承,现在显然已经破坏了.
传统平台非常庞大,测试覆盖率也不高,所以我正在寻找一个优秀的解决方案,对代码库的其余部分影响最小.也许,有一种我忽略的模式?
有人可以帮忙吗?(例子很棒)
谢谢
大卫
你能不能创建一个继承现有界面的新界面,比如
public interface IProcess2 : IProcess
{
IDTO Process(IDTO request, int Id);
}
Run Code Online (Sandbox Code Playgroud)
然后更改您的类以继承新的类.
这应该阻止现有IProcess的任何用户破坏.