web-dev-qa-db-fra.com

Modèle de conception pour la conversion d'objets (Java)

Je n'utilise pas très souvent des modèles de conception, à part une usine occasionnelle et MVC, et je veux commencer à les utiliser davantage.

J'ai un cas concret à portée de main que j'aimerais avoir votre avis sur l'utilisation des modèles de conception dans ce cas.

Dans mon application, je dois convertir des objets assez souvent dans différentes situations. Je devrais peut-être convertir un POJO Hibernate en DTO, car j'utilise GWT et les POJO Hibernate ne sont pas sérialisables et ne peuvent pas être envoyés sur la ligne.

Dans une autre situation, je pourrais avoir besoin de convertir des objets Java en SolrInputDocument pour l'indexation par Solr.

Je voudrais savoir si je dois utiliser un modèle de conception pour cela. Il semble que la "conversion d'objet" soit une tâche générique qui pourrait être gérée de manière flexible/abstraite par un modèle, mais je ne vois pas vraiment comment.

Sans modèles, je créerais simplement une classe distincte pour chaque type de conversion, par exemple CourseToSolrInputDocument (Course est une entité Hibernate dans mon application). Ou CourseToCourseDTO. Chacune de ces classes de conversion peut avoir une seule méthode statique appelée convert() qui prend l'objet source en entrée et renvoie l'objet de sortie.

Mais ce n'est pas vraiment un modèle, n'est-ce pas? J'ai donc commencé sur quelque chose avec des génériques et créé cette classe qui implémente l'interface Converter. Mais est en quelque sorte un sentiment idiot de créer une interface générique et je ne vois pas vraiment l'avantage autre que de pouvoir me féliciter pour l'utilisation des génériques.

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.
    }
}

Donc, la vraie question ici est: existe-t-il un modèle qui s'applique à la conversion d'objet générique et, quelle serait votre approche et quels sont les avantages par rapport à l'utilisation d'une approche de type classe par conversion?

21
Julius

Le modèle de traducteur est ce que vous demandez.

Mais je soupçonne que ce que vous recherchez est un cadre, plus qu'un modèle. Je crois que Dozer est populaire dans le monde Java.

18
pdr