객체 변환을위한 디자인 패턴 (Java)


21

가끔 공장과 MVC 외에 디자인 패턴을 자주 사용하지 않고 더 많이 사용하고 싶습니다.

이 경우 디자인 패턴 사용에 대한 귀하의 의견을 부탁드립니다.

내 응용 프로그램에서는 다른 상황에서 객체를 자주 변환해야합니다. GWT를 사용하고 Hibernate POJO는 직렬화 할 수 없으며 회선을 통해 보낼 수 없기 때문에 Hibernate POJO를 DTO로 변환해야 할 수도 있습니다.

다른 상황에서는 Solr에 의한 색인 작성을 위해 Java 오브젝트를 SolrInputDocument로 변환해야 할 수도 있습니다.

이를 위해 디자인 패턴을 사용해야하는지 알고 싶습니다. "개체 변환"은 패턴에 의해 유연하고 추상적 인 방식으로 처리 될 수있는 일반적인 작업 인 것 같습니다. 그러나 실제로는 어떻게 보지는 않습니다.

패턴이 없으면 CourseToSolrInputDocument와 같은 각 변환 유형에 대해 별도의 클래스를 만들 것입니다 (과정은 내 응용 프로그램에서 최대 절전 모드 엔터티입니다). 또는 CourseToCourseDTO. 이러한 각 변환 클래스 convert()에는 소스 개체를 입력으로 사용하고 출력 개체를 반환 하는 단일 정적 메서드가있을 수 있습니다 .

그러나 그것은 실제로 패턴이 아닙니다. 그렇지 않습니까? 그래서 나는 generics로 무언가를 시작했고 Converter 인터페이스를 구현하는이 클래스를 만들었습니다. 그러나 어쨌든 일반적인 인터페이스를 만드는 바보 같은 느낌이 들며 제네릭 사용을 축하 할 수있는 것 이외의 이점을 실제로 보지 못합니다.

public class CourseToSolrInputDocument implements Converter<Course, SolrInputDocument>         {
    @Override
    public void convert(Course source, SolrInputDocument destination) {
        //To change body of implemented methods use File | Settings | File Templates.
    }
}

따라서 실제 질문은 다음과 같습니다. 일반적인 객체 변환에 적용되는 패턴이 있습니까? 그리고 접근 방식은 무엇이며 변환 당 클래스 유형 접근 방식을 사용하는 것의 장점은 무엇입니까?


패턴은 사용하기 어려운 것보다 당신이하는 일 (및 올바르게 수행하는 방법의 예)의 이름입니다. 더 많은 패턴을 사용하는 방법보다 더 나은 질문은 이미 사용하고있는 패턴 (불완전하거나 복잡한 방식 일 수 있음)입니다.
user470365

답변:


18

번역기 패턴은 당신이 요구하는 것입니다.

그러나 나는 당신이 찾고있는 것이 패턴 이상의 프레임 워크라고 생각합니다. 나는 Dozer 가 Java 세계에서 인기가 있다고 생각 합니다.


Dozer와 Apache Beanutils를 알고 있습니다. "전환 구조"내부에있는 것들 중 하나를 사용하고 싶습니다. 그 동안 Spring은 static.springsource.org/spring/docs/3.0.0.RC3/reference/html/… 에서 찾을 수있는 객체를 변환하는 솔루션을 제공한다는 것을 알았습니다 . 나는 전에 그것을 보았지만 오래 전에, 내 자신의 인터페이스는 내가 봄에서 기억 한 것에 기반을 두었다. Spring이 이미 내 프로젝트에 있고 좋은 접근 방식으로 보이기 때문에 Spring 솔루션을 사용하려고합니다.
Julius
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.