ich ein Domain-Objekt habe:Scala, Rahmen spielen: Wie richtig injizieren Abhängigkeit in Domäne (Einheit) Klasse
case class User(val id: Long, username: String)
Ich will nicht Service-Repository-Ansatz (wie typische Federanwendungen folgen, wo Entitäten sind nur Datenhalter), ich möchte die Funktionalität für den Benutzer in das Benutzerobjekt einfügen.
Aber ich möchte Benutzerobjekt nicht an konkrete Infrastrukturimplementierungen binden, also möchte ich stattdessen Schnittstellen (Traits) übergeben.
Ich versuche, dies zu tun durch folgende:
case class User(val id: Long, val username: String, implicit val userRepository: IUserRepository)
Und irgendwo in der Anwendung (Controller, oder irgendwo anders), möchte ich (mit @Inject()) konkrete Umsetzung von IUserRepsoitory injizieren und wollen Es wird implizit an den Konstruktor von User übergeben.
Frage 1: Fall class User (val id: Lang, val username: String, implizite val UserRepository: IUserRepository) - das funktioniert nicht, es ist nicht
Frage 2 zusammengestellt: Ist es korrekt, die Infrastrukturimplementierung von der Objektdomäne im Spiel zu entkoppeln? sind sie einige Best Practices?
Danke.
Das ist subjektiv, aber für Q2 würde ich generell "nein" sagen, das Domain-Objekt sollte nicht wissen, wie die Anwendung es verwaltet, je nach Kontext. – cchantep
Was meinst du? Ist es eine schlechte Übung, wenn der Benutzer (Domänenobjekt) mit der Repository-Schnittstelle interagiert? (nicht Umsetzung) – Teimuraz
Für mich ja, das ist ein schlechter – cchantep