Design pattern per la conversione degli oggetti (java)

20

Non uso molto spesso modelli di progettazione, oltre a un factory e MVC occasionali, e voglio iniziare a usarli di più.

Ho un caso concreto a portata di mano che mi piacerebbe la tua opinione sull'uso dei modelli di design in questo caso.

Nella mia applicazione devo convertire gli oggetti abbastanza spesso in diverse situazioni. Potrei dover convertire un POnO Hibernate in un DTO, perché uso GWT e Hibernate POJO non sono serializzabili e non possono essere inviati sulla linea.

In un'altra situazione potrei aver bisogno di convertire oggetti Java in SolrInputDocument per l'indicizzazione di Solr.

Vorrei sapere se dovrei usare un modello di design per questo. Sembra che la "conversione degli oggetti" sia un compito generico che può essere gestito in modo flessibile / astratto da un modello, ma non vedo come.

Senza schemi creerei solo una classe separata per ogni tipo di conversione, ad esempio CourseToSolrInputDocument (Course è un'entità di Hibernate nella mia applicazione). O CourseToCourseDTO. Ciascuna di queste classi di conversione potrebbe avere un unico metodo statico chiamato convert() che prende l'oggetto di origine come input e restituisce l'oggetto di output.

Ma quello non è davvero un modello, vero? Così ho iniziato su qualcosa con i generici e ho creato questa classe che implementa l'interfaccia del convertitore. Ma in qualche modo si sente stupido tgo creare un'interfaccia generica e non vedo davvero il vantaggio se non quello di potermi congratulare con me stesso per l'uso dei generici.

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

Quindi, la vera domanda qui è: esiste un modello che si applica alla conversione di oggetti generici e, quale sarebbe il tuo approccio e quali sono i vantaggi rispetto all'utilizzo di un approccio di tipo classe-per-conversione?

    
posta Julius 31.01.2013 - 00:48
fonte

1 risposta

18

Il Pattern di traduttore è ciò che stai chiedendo.

Ma sospetto che quello che stai cercando sia un quadro, più che uno schema. Credo che Dozer sia popolare nel mondo Java.

    
risposta data 31.01.2013 - 01:04
fonte

Leggi altre domande sui tag