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


21

Je n'utilise pas les modèles de conception très souvent, à 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é 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?


Les modèles sont plus des noms pour ce que vous faites (et un exemple comment le faire correctement), que quelque chose de génial à utiliser. Donc, une meilleure question que la façon dont je peux utiliser plus de modèles est: quels motifs j'utilise déjà (peut-être d'une manière incomplète / alambiquée).
user470365

Réponses:


18

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.


Je connais Dozer et Apache Beanutils. Je voudrais en utiliser un dans ma "structure de conversion". En attendant, j'ai trouvé que Spring propose une solution pour convertir des objets qui peuvent être trouvés ici: static.springsource.org/spring/docs/3.0.0.RC3/reference/html/… . Je l'avais déjà vu, mais il y a longtemps, donc ma propre interface était basée sur ce dont je me souvenais de Spring. Je vais opter pour la solution Spring, car Spring est déjà dans mon projet et cela ressemble à une bonne approche.
Julius
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.