2011-11-07 66 views
0

設計基於HTTP的服務時可以使用多種不同的參數調用哪種設計模式?使Web服務響應大量輸入參數規則的設計模式

有些參數是必需的,有些是可選的,有些必須一起使用,有些是完全矛盾的。我厭倦了做同樣的事情,並干擾我的服務方式。一定會有更好的辦法。

我熟悉請求過濾器的概念,但這也只有部分幫助,因爲我必須爲它們提供與我的控制器相同的數據上下文。

什麼是以分離方式生成所有輸入規則的適當方法?

+1

也許[命令模式](http://en.wikipedia.org/wiki/Command_pattern)可以幫助你在這裏。 – flash

+0

我認爲這不是真的與網絡服務相關。這在所有類型的應用程序中都是同樣的問題 - 您有複雜的輸入驗證規則。您可以設計(使用)可用於不同操作的驗證組件,也可以引入某種規則引擎。 – home

回答

0

這不是一個Designpattern(或者至少我不知道它是一個)。但是什麼是關於「配置對象」。

這個配置對象是一個或多或少愚蠢的bean,就像一個數據傳輸對象。其中包含您需要的所有參數。

配置對象本身有一個方法來檢查它是否有效。

此外,您可以使其使用更有意義。例如,如果您必須始終(且僅)必須一起使用的屬性,則不要爲每個屬性設置setter。相反,有一個方法同時需要兩個參數。

0

我將這個參數到方法的映射外化到某個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> 

也許有正在現有的框架。