【问题标题】:Design pattern for making a web service respond to a large number of input parameter rules使 Web 服务响应大量输入参数规则的设计模式
【发布时间】:2011-11-07 09:06:53
【问题描述】:

在设计基于 HTTP 的服务(可以使用许多不同的参数调用)时,使用什么设计模式?

有些参数是必需的,有些是可选的,有些必须一起使用,有些则完全矛盾。我厌倦了做同样的事情,如果这个和那个做任何事情,并且混乱我的服务方法。一定有更好的办法。

我熟悉请求过滤器的概念,但这也只是部分帮助,因为我必须为它们提供与我提供控制器相同的数据上下文。

以解耦方式生成所有输入规则的适当方法是什么?

【问题讨论】:

  • 也许command pattern 可以帮助您。
  • 我认为这与网络服务无关。在所有类型的应用程序中都是同样的问题——你有复杂的输入验证规则。您可以设计(使用)可用于不同操作的验证组件,也可以引入某种规则引擎。

标签: java web-services spring servlets


【解决方案1】:

它不是设计模式(或者至少我不知道它是一个)。但是关于“配置对象”是什么。

这个配置对象或多或少是一个愚蠢的 bean,就像一个数据传输对象。其中包含您需要的所有参数。

配置对象本身有一个方法来检查它是否有效。

此外,您还可以使其用法更有意义。例如,如果您必须始终(且仅)必须一起使用的属性,则不要为每个属性设置设置器。而是让一个方法同时接受两个参数。

【讨论】:

    【解决方案2】:

    例如,我会将这个参数到方法的映射外部化到某个 XML 文件中,该文件由一个单例类加载,该类将规则应用于当前请求并返回方法名称。

    只是一些想法:

    <methods>
        <method name="method1">
            <method-param name="param1"/>
            <method-param name="param2" required="true" validator="<validator class>"/>
            <method-param name="param3" required="true" type="java.lang.Integer"/>
        </method>
        <method name="method2">
            <method-param name="param4" required="true"/>
            <method-param name="param5" required="true"/>
            <method-param name="param6"/>
            <method-param-group required="true" validator="<validator class>">
                <method-param name="param7"/>
                <method-param name="param8"/>
            </method-param-group>
        </method>
    </methods>
    

    也许有现有的框架。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-15
      • 2015-01-03
      • 2019-02-23
      • 2010-12-10
      • 1970-01-01
      • 2010-12-18
      • 1970-01-01
      相关资源
      最近更新 更多