Saya membutuhkan antarmuka yang meyakinkan saya metode tertentu, termasuk tanda tangan tertentu, tersedia. Sejauh ini adalah apa yang saya miliki:
public interface Mappable<M> {
M mapTo(M mappableEntity);
}
Masalah muncul ketika kelas harus bisa dipetakan ke beberapa entitas lain. Kasus yang ideal adalah ini (bukan java):
public class Something implements Mappable<A>, Mappable<B> {
public A mapTo(A someObject) {...}
public B mapTo(B someOtherObject) {...}
}
Apa yang akan menjadi cara terbaik untuk mencapai sisa ini sebagai "generik" mungkin?
C
dan Anda inginSomething
bisa dipetakan untuk itu, maka Anda perlu memodifikasiSomething
, yang terlalu banyak penggabungan. Hanya menambahkan yang baruSoemthingToCMapper
tidak terlalu mengganggu.Karena itu tidak diizinkan untuk mengimplementasikan antarmuka multi-multipel, Anda dapat mempertimbangkan penggunaan enkapsulasi. (contoh menggunakan java8 +)
Silakan periksa di sini untuk info lebih lanjut & lebih banyak contoh: Bagaimana membuat kelas Java yang mengimplementasikan satu antarmuka dengan dua jenis generik? .
sumber
Jika Anda ingin memetakan Pengguna ke UserDTO dan memetakan Pengguna ke UserViewModel, maka Anda akan membutuhkan dua implementasi terpisah. Jangan menumpuk semua logika ini ke dalam satu kelas - tidak masuk akal untuk melakukan itu.
Perbarui untuk membuat Joachim senang
Tapi sekarang kita berada di ranah Automapper ( http://automapper.codeplex.com/wikipage?title=Custom%20Type%20Converters )
sumber
IMappable
itu nama yang baik untuk sesuatu yang memetakan hal-hal lain.Mapper
(atauIMapper
, jika Anda harus ;-)) mungkin lebih benar. (Omong-omong: tidak, itu bukan downvote saya).