設計基於HTTP的服務時可以使用多種不同的參數調用哪種設計模式?使Web服務響應大量輸入參數規則的設計模式
有些參數是必需的,有些是可選的,有些必須一起使用,有些是完全矛盾的。我厭倦了做同樣的事情,並干擾我的服務方式。一定會有更好的辦法。
我熟悉請求過濾器的概念,但這也只有部分幫助,因爲我必須爲它們提供與我的控制器相同的數據上下文。
什麼是以分離方式生成所有輸入規則的適當方法?
設計基於HTTP的服務時可以使用多種不同的參數調用哪種設計模式?使Web服務響應大量輸入參數規則的設計模式
有些參數是必需的,有些是可選的,有些必須一起使用,有些是完全矛盾的。我厭倦了做同樣的事情,並干擾我的服務方式。一定會有更好的辦法。
我熟悉請求過濾器的概念,但這也只有部分幫助,因爲我必須爲它們提供與我的控制器相同的數據上下文。
什麼是以分離方式生成所有輸入規則的適當方法?
這不是一個Designpattern(或者至少我不知道它是一個)。但是什麼是關於「配置對象」。
這個配置對象是一個或多或少愚蠢的bean,就像一個數據傳輸對象。其中包含您需要的所有參數。
配置對象本身有一個方法來檢查它是否有效。
此外,您可以使其使用更有意義。例如,如果您必須始終(且僅)必須一起使用的屬性,則不要爲每個屬性設置setter。相反,有一個方法同時需要兩個參數。
我將這個參數到方法的映射外化到某個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>
也許有正在現有的框架。
也許[命令模式](http://en.wikipedia.org/wiki/Command_pattern)可以幫助你在這裏。 – flash
我認爲這不是真的與網絡服務相關。這在所有類型的應用程序中都是同樣的問題 - 您有複雜的輸入驗證規則。您可以設計(使用)可用於不同操作的驗證組件,也可以引入某種規則引擎。 – home