Czytam online o zagadnieniach przekrojowych, ponieważ właśnie zaimplementowałem Log4j w moim kodzie. Niektórzy mówią, że używanie AspectJ jest w porządku, podczas gdy inni wskazują, że łamie funkcjonalne programowanie. Te mixiny są rozwiązaniem firmy Scala dla zagadnień przekrojowych.Sposób obsługi przekrojów dotyczy sposobu Scala
Jednak wzdrygam się, gdy myślę, że rozciągnę cechę na obiekt/klasę, która nie jest z sobą powiązana.
np. new Database with Logger
Tutaj Logger
nie ma nic wspólnego z Database
, ale jest sposobem mieszania w celu zapewnienia rejestrowania. Wolałbym zrobić to w Scali, więc chcę się dowiedzieć, co ludzie rozumieją przez mixins.
Czy ktoś może pokazać mi szybki przykład, jak to zrobić w Scali?
Jest to to samo, co zmienna globalna w języku Java. I zanegowałoby cel zastrzyku zależności. –
To zdecydowanie nie jest to samo, co posiadanie zmiennej globalnej w Javie, jeśli masz zależności, które chcesz być dostępne w kwestii przekrojów, możesz przekazać je jako zwykłe lub niejawne parametry do metody przekrojowej. Nie ma nic wymogu Logując się na singleton, zrobiono to tylko w ten sposób, aby krótki przykład kodu był krótki (i ponieważ, ponieważ rzadko wprowadzasz rejestrator). – johanandren
wystarczająco fair. Teraz rozumiem. –