2012-07-13 4 views
0

GWT-RPC, Business 및 DAO의 세 가지 레이어가있는 응용 프로그램이 있습니다. 모든 계층에 다른 Bean이 있습니다. 예를 들어 사용자의 경우 UserRPC (UI의 경우), User (비즈니스) 및 UserDTO (유지)가 있습니다. 모든 레이어 변경시 객체를 재 변환합니다.Java 응용 프로그램에서 계층 간 열거 전달

주요 문제는 열거입니다. 열거 형은 레이어에서 완전히 동일하지만 레이어를 독립적으로 유지하려면 레이어를 반복해야합니다.

의견이 있으십니까?

답변

2

(짧은 대답)

그들이 진정으로 동일한 경우 당신이 commons 프로젝트/항아리를 만들려고합니다. 여기에 내부와 같은 유틸리티 등 클래스, 열거,

(긴 답)

시스템의 전반적인 구조를 고려로 전체 응용 프로그램에 공통적으로 모든 일이 있습니다, 어떤 필요가해서는 안 어떤 계층에서든 데이터가 중복되었습니다. 이것이 발생하면 시스템 설계에 결함이 있으며 단단한 결합 시나리오가 수평에있을 수 있음을 의미합니다. 이것은 소프트웨어 엔지니어를 개발할 때 구현을하기 전에 인터페이스 (계약/API)를 자주 문서화해야하는 이유 중 일부입니다. 이러한 인터페이스가 승인되고 중복 가능성이 없으면 실제 구현을 시작할 수 있습니다. 이것은 응용 프로그램의 각 개별 계층에서 생성되는 상수 인 X 열거 형의 시나리오를 포착합니다. 또한 열거 형에 영향을 미칠 비즈니스 계층의 내용이 변경되면 코드를 다시 컴파일하고 다시 배포해야한다는 것을 명심하십시오. 이것은 당신이 다루어야 할 완전히 다른 문제이기 때문에 모든 시스템 상수에 대해 모두 열거 형을 캐치로 사용하지 않도록주의해야합니다.

+1

동의해야합니다. 하지만 저는 이것을 '커먼즈'라고 부르지 않을 것입니다. 나는 API 프로젝트를 소개 할 것을 제안한다. 모든 인터페이스와 enum은이 프로젝트/jar에 들어가야하며 모든 레이어에서 사용할 수 있습니다. 당신이 정말로 피해야하는 유일한 것은 순환 적 종속성과 구현 클래스에 대한 불필요한 의존성입니다. 이런 종류의 분리는 응용 프로그램을 더 쉽게 테스트 할 수 있도록 도와줍니다. – Oliver

+0

@OliverF. 똑같이 유효한 지점. 나는 "commons"이라는 용어가 요즘 너무 과용되어 있음을 안다. :) – Woot4Moo

1

주는 Enumeration 정확히 층에서 동일하지만 나는 레이어 독립성을 유지하기 위해 그들을 복제 해야합니다.

데이터 복제는 결코 좋은 아이디어가 아닙니다. 한 열거 형의 업데이트가 다른 레이어에 반영되었는지 어떻게 확인합니까? 아마도 모든 공용 클래스를 여기에 배치하는 유틸리티 계층을 작성해야합니다.

관련 문제