Шаблон дизайну для перетворення об'єктів (java)


21

Я не використовую шаблони дизайну дуже часто, окрім випадкових заводських та MVC, і я хочу почати використовувати їх більше.

У мене є конкретний випадок, що я хотів би отримати вашу думку щодо використання моделей дизайну в даному випадку.

У своїй програмі мені доводиться перетворювати об'єкти досить часто в різних ситуаціях. Можливо, мені доведеться перетворити сплячу POJO в DTO, оскільки я використовую GWT та Hibernate POJO, не піддаються серіалізації та не можуть бути надіслані по лінії.

В іншій ситуації мені може знадобитися перетворити об’єкти Java в SolrInputDocument для індексації Solr.

Я хотів би знати, чи варто використовувати для цього шаблон дизайну. Здається, що "конвертація об'єктів" - це загальне завдання, з яким можна обробляти гнучко / абстрактно за шаблоном, але я не дуже розумію як.

Без шаблонів я просто створив би окремий клас для кожного типу перетворення, наприклад, CourseToSolrInputDocument (Курс - це сплячий об'єкт у моїй програмі). Або CourseToCourseDTO. Кожен з цих класів перетворення може мати єдиний статичний метод, який називається convert()вихідним об'єктом як вхідним і повертає вихідний об'єкт.

Але це насправді не зразок, чи не так? Тому я почав щось із генерики і створив цей клас, який реалізує інтерфейс 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

перекладач Pattern - це те, про що ви просите.

Але я підозрюю, що ви шукаєте - це рамка, а не модель. Я вважаю, що Dozer популярний у світі Java.


Я знаю Dozer та Apache Beanutils. Я хотів би використовувати один із тих, хто знаходиться в моїй "структурі конверсії". Я тим часом виявив, що Spring пропонує рішення для перетворення об'єктів, які можна знайти тут: static.springsource.org/spring/docs/3.0.0.RC3/reference/html/… . Я бачив це і раніше, але дуже давно, тому мій власний інтерфейс був начебто заснований на тому, що я запам'ятав із Spring. Я збираюся піти з рішенням Spring, тому що Весна вже в моєму проекті, і це виглядає як хороший підхід.
Юлій
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.