Sto leggendo online sui problemi trasversali da quando ho implementato Log4j nel mio codice. Alcune persone dicono che usare AspectJ è ok, mentre altri sottolineano che rompono la programmazione funzionale. Quelle miscele sono la soluzione di Scala per le preoccupazioni trasversali.Come gestire il taglio trasversale riguarda il modo Scala
Tuttavia, rabbrividisco quando penso che estenderò un tratto a un oggetto/classe che non è correlato.
ad es. new Database with Logger
Qui Logger
non ha nulla a che fare con Database
, ma è come eseguire il missaggio per fornire la registrazione. Preferirei farlo alla Scala, quindi voglio scoprire che questo è ciò che la gente intende per mixin.
Qualcuno può, per favore, mostrarmi un rapido esempio di come fare questo in Scala?
È come avere una variabile globale in Java. E negherebbe lo scopo dell'iniezione di dipendenza. –
In definitiva, non è la stessa cosa che avere una variabile globale in Java, se si dispone di dipendenze che si desidera siano disponibili nel problema trasversale, è possibile passare tali parametri come normali o impliciti al metodo di taglio incrociato. Non è necessario eseguire il logging per essere un singleton, è stato fatto in questo modo per rendere l'esempio del codice breve (e perché raramente si iniettava un logger). – johanandren
abbastanza giusto. Ho capito il tuo punto ora. –