我有一个非常复杂的对象,我希望添加执行多个命令的功能。每个命令可能需要不同的数值参数;它们的数量(参数)必须是可变的,以便为非常不同的处理请求安排空间。我概述的解决方案如下:
public enum ProcessingMethod {NONE, THIS, THAT, ETC};
public interface IProcessing
{
void Process(ProcessingMethod ProcType, Double[] Parameters);
}
这样实现接口的对象:
这种设计似乎很简单,能够完成工作,但看着它,我有强烈的感觉,这种设计是不灵活的程序推理的症状。我试图在命令设计模式方面做得更好,但在我看来相当矫枉过正。此外,它与我的需求不完全匹配。
我的问题是:有一个简单的解决方案可以在更多的设计中满足这些要求吗?
答案 0 :(得分:0)
我发现你的方法存在两个问题:
ProcessingMethod
ProcessingMethod
由于这两个原因,我会将你的各种"过程"方法进入自己的函数调用以确保参数计数安全(第一个问题远没那么重要):
public interface IProcessing
{
void ProcessNone();
void ProcessThis(double x);
void ProcessThat(double x, int y);
...
}
接口定义了一个契约,它说明了对象可以执行的操作,并提供编译时安全性,以确保实现者至少具有这些签名的功能。它是一种更安全的方法。
但是,如果你真的想避免使用这种界面,那么你的实现似乎是合理的。