繁体   English   中英

处理灵活的命令请求

[英]Handling flexible command requests

我有一个非常复杂的对象,我希望添加执行多个命令的功能。 每个命令可能需要不同的数值参数; 它们的数量(参数)必须是可变的,以便为非常不同的处理请求安排空间。 我概述的解决方案如下:

public enum ProcessingMethod {NONE, THIS, THAT, ETC};    
public interface IProcessing
{
    void Process(ProcessingMethod ProcType, Double[] Parameters);
}  

这样实现接口的对象:

  1. 能够通过第一个参数识别请求的处理类型;
  2. 知道从数组长度传递了多少参数;
  3. 只传递数值参数,可以简单地从double转换为处理整数,long,float。
  4. 封装处理考虑到位置的参数所需的知识

这种设计看起来很简单,能够完成工作,但看着它,我有强烈的感觉,这种设计是不灵活的程序推理的症状。 我试图在命令设计模式方面做得更好,但在我看来相当矫枉过正。 此外,它与我的需求不完全匹配。

我的问题是:有一个简单的解决方案可以在更多的设计中满足这些要求吗?

我看到你的方法有两个问题:

  1. 无法保证实现对象将具有每个ProcessingMethod的实现
  2. 没有办法匹配给定ProcessingMethod的参数数量

由于这两个原因,我会将各种“Process”方法拆分为它们自己的函数调用,以确保参数计数的安全性(第一个问题远不那么重要):

public interface IProcessing
{
    void ProcessNone();
    void ProcessThis(double x);
    void ProcessThat(double x, int y);
    ...
}

接口定义了一个契约,它描述了对象可以执行的操作,并提供编译时安全性,以确保实现者至少具有这些签名的功能。 它是一种更安全的方法。

但是,如果你真的想避免使用这种接口,那么你的实现似乎是合理的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM