Saya tidak terlalu sering menggunakan pola desain, di samping pabrik dan MVC sesekali, dan saya ingin mulai menggunakannya lebih banyak.
Saya punya kasus konkret yang ada dan saya ingin pendapat Anda tentang penggunaan pola desain dalam kasus ini.
Dalam aplikasi saya, saya harus sering mengkonversi objek dalam situasi yang berbeda. Saya mungkin harus mengonversi Hibernate POJO ke DTO, karena saya menggunakan GWT dan Hibernate POJO tidak berseri dan tidak dapat dikirim melalui saluran.
Dalam situasi lain saya mungkin perlu mengkonversi objek Java ke SolrInputDocument untuk pengindeksan oleh Solr.
Saya ingin tahu apakah saya harus menggunakan pola desain untuk ini. Tampaknya "konversi objek" adalah tugas umum yang dapat ditangani dengan cara yang fleksibel / abstrak dengan suatu pola, tetapi saya tidak benar-benar mengerti caranya.
Tanpa pola, saya hanya akan membuat kelas terpisah untuk setiap jenis konversi, misalnya CourseToSolrInputDocument (Kursus adalah entitas Hibernate dalam aplikasi saya). Atau CourseToCourseDTO. Setiap kelas konversi ini mungkin memiliki metode statis tunggal yang disebut convert()
yang mengambil objek sumber sebagai input dan mengembalikan objek output.
Tapi itu bukan pola, bukan? Jadi saya mulai dengan sesuatu dengan obat generik dan membuat kelas ini yang mengimplementasikan antarmuka Konverter. Tapi entah kenapa terasa konyol untuk membuat antarmuka generik dan saya tidak benar-benar melihat keuntungan selain bisa memberi selamat kepada diri sendiri atas penggunaan obat generik.
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.
}
}
Jadi, pertanyaan sebenarnya di sini adalah: apakah ada pola yang berlaku untuk konversi objek generik dan, apa yang akan menjadi pendekatan Anda dan apa keuntungan dibandingkan hanya menggunakan pendekatan tipe kelas per konversi?
sumber
Jawaban:
The Translator Pola adalah apa yang Anda minta.
Tetapi saya menduga apa yang Anda cari adalah kerangka kerja, lebih dari sekadar pola. Saya percaya Dozer populer di dunia Jawa.
sumber