2010-03-19 8 views
0

나는 서버 소켓 에뮬레이터를 만들고 싶지만 거기에 몇 가지 디자인 패턴을 구현하고 싶다. 사례 연구에서 다음과 같이 간단하게 설명했습니다.서버 에뮬레이터를위한 디자인 패턴

내 서버 소켓은 항상 클라이언트 소켓을 수신합니다. 일부 요청 메시지가 클라이언트 소켓에서 오는 동안 서버 에뮬레이터는 소켓을 통해 클라이언트에 응답합니다.

응답 코드입니다. '00'은 요청 메시지가 성공적으로 처리되었음을 나타내고, 또 다른 응답 코드는 '00'은 메시지 요청을 처리하는 동안 오류가 있음을 나타냅니다.

일부 UI가 있습니다.이 UI에는 다음과 같은 확인 응답 매개 변수가 포함되어 있습니다. 서버는 응답을 클라이언트 메시지를 원하는 반면

  1. 간격 응답 코드 제한은 응답 코드는 슬립 스레드를 생성한다, 입력 파라미터 응답 형 UI에서
  2. 체크 타임 아웃 간격을 취하고 간격 촬영 UI에서 입력 한 시간 초과 간격.

이 기능을 구현했지만 하나의 클래스로 만듭니다. 나는 그렇게 짜증 스럽다고 느낀다. 내 코드를 리팩토링하기 위해 만들어야하는 클래스/인터페이스를 제안 해 주실 수 있습니까?

답변

1

코드를 리팩토링해야하는 필요성은 클라이언트 요청에 따라 서버가 수행중인 작업에 따라 달라집니다. 단순한 것이라면 단일 클래스가 가장 좋은 디자인 일 것입니다. 좀 더 복잡한 작업을 수행하는 경우 수행 할 수있는 다양한 작업을 다양한 서비스 클래스로 옮길 수 있습니다. 결과가 표준 인 경우 개체를 만들 수 있습니다 (아마도 enum?).

이것은 내 응용 프로그램 중 하나에서 취한 접근법입니다. 서버는 기본적으로 자신과 클라이언트 간의 IO 만 처리합니다. 클라이언트가 메시지를 보내면 서버는 그것을 표준 형식의 "operation"객체로 구문 분석합니다. 그런 다음이 객체는 적절한 "요청 서비스 객체"를 찾는 관리자 객체로 전달됩니다. 이 객체는 실제 작업을 수행합니다. 작업이 완료되면 객체의 상태/결과를 설명하는 반환 객체를 생성합니다. 그런 다음 서버에서 가져 와서 적절한 방식으로 형식을 지정하여 전선을 통해 클라이언트로 보냅니다.

이 정보를 통해 애플리케이션에 적합한 것이 무엇인지 알 수 있습니다.

+0

책임 팁 및 다른 패턴에 대한 내용도 읽으십시오. – fredcrs

+0

한 가지 방법은 서버의 응용 프로그램과 클라이언트 모두에서 동일한 "요청 서비스 개체"를 사용하는 것입니다. 그렇게하니? – fredcrs