2014-11-05 2 views
0

여러 개의 속성을 가진 클래스 사용자가 있다고 가정 해 보겠습니다. 나는 "사용자 정보"를 요청할 때 내 홈페이지에 REST 기반의 응용 프로그램을 구축하고있다. 나는 사용자로부터 몇 가지 속성 만 필요로하고 다른 클래스에서는 나머지를 필요로한다. 어떻게 "사용자 세부 사항"을 반환 할 개체에 대한 클래스를 작성합니까?내 클래스의 일부만 노출

현재 디자인에서는 JSON을 빌드하는 데 필요한 속성을 클래스에서 가져옵니다. 이 문제를 해결할 더 좋은 방법이 있기를 바랍니다. 당신은 전체 비즈니스 클래스 사용자를 노출하지 않으려는 경우

는 내가 두 번째 수업하는 DTO를 만들 수 있습니다, 자바

+1

어떤 프로그래밍 언어/프레임 워크를 사용합니까? – mkubacki

답변

0

와 프레임 워크 2.0을 재생 사용합니다. 이 클래스는 REST API에서 전송할 데이터 만 제공합니다.

User user = new User("admin"); 
// Set other properties 
UserDetailsDTO userDetailsDTO = new UserDetails(user); //<- Transfer userDetailsDTO 

또는 "사용자 정보"만약

어쩌면 당신이 된 UserDetails 클래스를 만들고 구성하여 사용자 클래스 내부에 그것을 사용하는 것이 좋습니다, 응용 프로그램에 대한 중요하다.

public class User { 
    Long id; 
    String name; 
    String address; 
    UserDetails userDetails; // Composition <- Tranfer userDetails 
} 

참고 : 예를 들어 돈이 자바에서

+0

반환하려는 개체에 다른 클래스의 속성이 포함될 수 있습니다. 예. User 클래스와 Courses 클래스의 속성의 혼합 – AbrahamDaniel

+0

다음은 API에 의해 전송되는 필요한 데이터가있는 특정 클래스 인 fisrt aproach를 사용합니다. – Ezequiel

0

당신처럼 보이는 외관이 필요합니다 http://en.wikipedia.org/wiki/Facade_pattern. 여러 클래스의 메서드/속성을 노출하는 데 도움이되는 간단한 패턴입니다. Facade 클래스의 객체에 대한 참조를 저장하고 필요한 것만 표시 할 수 있습니다.

0

View Model 객체를 생성하여 JSON에 필요한 정보에 대한 적절한 추상화를 제공하는 옵션이 있습니다. 여기에 대한 자세한 내용 : http://en.wikipedia.org/wiki/Model_View_ViewModel

하지만 일반적으로보기가 응용 프로그램의보기에서 직접 사용되는 경우에 사용됩니다. 위에서 언급 한 유스 케이스에서는 이미 JSON을 작성 했으므로 신중한 분석이 필요하므로이 View Model 레이어의 작성은 실제로 정당화된다.

관련 문제