2011-11-07 1 views
0

여러 매개 변수로 호출 할 수있는 HTTP 기반 서비스를 설계 할 때 사용되는 디자인 패턴은 무엇입니까?많은 수의 입력 매개 변수 규칙에 웹 서비스를 응답하게하는 디자인 패턴

일부 매개 변수는 필수이며 일부 매개 변수는 선택 사항이며 일부 매개 변수는 함께 사용해야합니다. 다른 매개 변수는 완전히 모순입니다. 나는이 일을 하느라 피곤하다. 그리고 무엇이든지이 일을하고, 내 봉사 방법을 어수선하게 만든다. 더 좋은 방법이 있어야합니다.

요청 필터의 개념에 익숙하지만 컨트롤러에 제공하는 것과 동일한 데이터 컨텍스트를 제공해야하므로 부분적으로 만 도움이됩니다.

모든 입력 규칙을 디커플링 방식으로 생성하는 적절한 방법은 무엇입니까?

+1

[명령 패턴] (http://en.wikipedia.org/wiki/Command_pattern)이 도움이 될 수도 있습니다. – flash

+0

나는 이것이 웹 서비스와 관련이 없다고 생각한다. 모든 유형의 응용 프로그램에서 동일한 문제입니다. 복잡한 입력 유효성 검사 규칙이 있습니다. 다른 작업에서 사용할 수있는 유효성 검사 구성 요소를 설계 (사용)하거나 일종의 규칙 엔진을 도입 할 수 있습니다. – home

답변

0

디자인 패턴이 아님 (또는 적어도 그것이 하나라는 것을 모릅니다). 그러나 "구성 객체"는 무엇입니까?

이 구성 객체는 데이터 전송 객체와 같이 다소 어리석은 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> 

어쩌면이 존재하고 프레임 워크.

관련 문제