Ich lese online über cross cutting Bedenken, da ich gerade Log4j in meinen Code implementiert. Einige Leute sagen, mit AspectJ ist in Ordnung, während andere darauf hinweisen, dass es funktionale Programmierung bricht. Diese Mixins sind Scalas Lösung für Querschnittsaufgaben.Wie Cross Scraping betrifft die Scala Weg
Allerdings schaudere ich, wenn ich denke, dass ich ein Merkmal auf ein Objekt/eine Klasse erweitern werde, das nicht selbst verwandt ist.
z.B. new Database with Logger
Hier Logger
hat nichts mit Database
zu tun, aber seine Mischung zu Protokollierung bereitstellen. Ich würde es lieber auf der Scala machen, also möchte ich herausfinden, dass dies das ist, was Leute von Mixins meinen.
Kann mir bitte jemand ein kurzes Beispiel zeigen, wie man in Scala vorgeht?
Dies ist das Gleiche wie eine globale Variable in Java. Und würde den Zweck der Abhängigkeitsinjektion negieren. –
Es ist definitiv nicht dasselbe wie eine globale Variable in Java, wenn Sie Abhängigkeiten haben, die Sie in der Querschnittsfunktion verfügbar haben möchten, die Sie als normale oder implizite Parameter an die Cross-Cutting-Methode übergeben können. Es gibt keine Notwendigkeit, sich als Singleton zu registrieren, es wurde nur auf diese Weise gemacht, um das Codebeispiel kurz zu halten (und weil Sie selten einen Logger injizieren würden). – johanandren
fair genug. Ich verstehe jetzt. –