2010-02-24 10 views
0

이 문제의 디자인에 대해 어떻게 생각하십니까? 나는 사용자가 데이터베이스에서 사전을 수정할 수 있도록 webservice를 작성해야한다. 루트과 함께 선택의 여지가있다디자인과 관련된 몇 가지 질문

AdminService :

  • AddCode [@DictionaryName, @code, @description]
  • 나는 (그것을 단순화 것)과 같다 XML 스키마를 가지고

  • RemoveCode [@DictionaryName, @code, @description]
  • DeleteCode (@dictionaryName, @code, @description]

문제는 일부 사전에는이 두 가지 속성 이상이 삽입된다는 것입니다. 때로는 하드 코드 된 추가 코드가 포함되어 있습니다 (더 복잡하지만이 질문을 위해 간단하게했습니다. 일반적으로 코드입니다). 사전마다 다릅니다.) 내가 가지고있는 것은 다음과 같습니다.

들어오는 XML은 Jaxb를 사용하여 자바 객체로 변환되고,이 자바 객체는 <으로 전달됩니다.이 방법으로 구현되었으므로 변경할 수 없습니다. 내가 등록 된 서비스의 목록을 (내가 자바, 봄, 최대 절전 모드를 사용)를 포함 라우터의 종류를 가지고

:

은 여기 내 일부입니다. 이 라우터 내부에는 xml에서 생성 된 객체가 AddCode Obj 또는 RemoveCode Obj를 포함하는지 확인하는 메소드가 있습니다. 를 기반으로하고 같은 서비스가 예를 들어 있으므로 사전의 이름은 요청을 처리하기 위해 등록 된 서비스 중 하나를 사용 : 요청이 CreateCode 요소와 함께 제공된 경우, 코드를 작성하는 데 사용됩니다

class Add[DictionaryName]CodeService implements Service { 
    execute(ObjectfromXML); 
} 

. 이 서비스 (java obj 또는 xml 응답)에 의해 반환되는 것은 현재 범위를 벗어난 것입니다.

문제는 접근 방식을 사용하여 내가 좋아하는 3 개 클래스를 작성해야한다는 것입니다 : [DictionaryName] CodeService 추가

, 는 [DictionaryName] CodeService을 제거 는 [DictionaryName] CodeService을 삭제합니다.

새 사전을 추가 할 때.

또한이 세 가지 서비스를 라우터에 추가 할 때마다 라우터의 크기가 커야한다는 것을 의미합니다. 클래스의 집합을 추가 해야하는지 궁금하네요 아래와 같은 방법으로 또는 다른 접근 방식을 사용하십시오.

라우터는 특정 코드를 추가하는 데 사용되는 모든 서비스를 포함 할 것이다 단지 3 서비스 AddCodeService, RemoveCodeService, DeleteCodeService 및 AddService를 포함하는 것, 즉 [DictionaryName1] 서비스 추가 등을 DictionaryName2] 서비스,

어떤 아이디어를 추가 ? 또한 클래스 이름 지정에 문제가있었습니다 ... 라우터 대신 DictionaryService를 사용하려고 시도했지만 [DictionaryName] CodeService를 추가하는 대신 [DictionaryName] CodeAction을 추가했지만 서비스는 & 라우터의 소리가 더 좋았습니다.

+0

Ramires, 귀하의 질문 제목을 좀 더 서술 적으로 바꾸어보십시오. –

+0

변경할 방법이 있습니까? 나는 옵션을 볼 수 없다 – Ramires

+0

음, 뭐가 문제 야? 당신은 그것을 더 잘 알게 될 것이고 나중에 당신이 그것을 리팩토링 할 수 있기 때문에 정말로 이름을 요구해서는 안됩니다. 항상 그것을 얻으려고 노력하십시오 (단위 테스트와 함께 보장) 그리고 그 작품이 당신의 디자인을 향상시키고 단위 테스트가 통과한다면 ... – Karussell

답변

0

자세한 정보를 제공해야합니다. 제공된 정보에서 왜 각 사전에 대해 별도의 수업이 필요한지 알지 못합니다.각 사전에 대한 논리가 다른 경우 사전에 "DictionaryService"와 같은 것을 추가합니다.이 사전은 모든 추가/삭제/제거 방법을 처리합니다. 그런 다음 특정 사전에 사용될 서비스를 찾기위한 레지스트리 (지도)를 가질 수 있습니다.