Ich benötige eine Schnittstelle, die sicherstellt, dass eine bestimmte Methode, einschließlich einer bestimmten Signatur, verfügbar ist. Bisher habe ich Folgendes:
public interface Mappable<M> {
M mapTo(M mappableEntity);
}
Das Problem tritt auf, wenn eine Klasse mehreren anderen Entitäten zugeordnet werden kann. Der Idealfall wäre dies (nicht Java):
public class Something implements Mappable<A>, Mappable<B> {
public A mapTo(A someObject) {...}
public B mapTo(B someOtherObject) {...}
}
Was wäre der beste Weg, um dies so "generisch" wie möglich zu erreichen?
C
undSomething
darauf abgebildet werden möchten , müssen Sie Änderungen vornehmenSomething
, was zu viel Kopplung bedeutet. Nur ein neues hinzuzufügenSoemthingToCMapper
ist weniger aufdringlich.Da dies nicht erlaubt ist, mehrere Schnittstellen zu implementieren, können Sie die Verwendung der Kapselung in Betracht ziehen. (Beispiel mit Java8 +)
Weitere Informationen und Beispiele finden Sie hier: Wie erstelle ich eine Java-Klasse, die eine Schnittstelle mit zwei generischen Typen implementiert? .
quelle
Wenn Sie User UserDTO und User UserViewModel zuordnen möchten, benötigen Sie zwei separate Implementierungen. Stapeln Sie all diese Logik nicht in einer einzigen Klasse - das macht keinen Sinn.
Update, um Joachim glücklich zu machen
Aber jetzt befinden wir uns im Bereich Automapper ( http://automapper.codeplex.com/wikipage?title=Custom%20Type%20Converters ).
quelle
IMappable
es ein guter Name für etwas ist, das andere Dinge abbildet.Mapper
(oderIMapper
, wenn Sie müssen ;-)) ist wahrscheinlich korrekter. (Übrigens: Nein, das war nicht meine Ablehnung).