Cześć, napotkałem się z pewnym problemem i pierwszy raz w życiu chcę użyć aspektu. Otóż:
mam jakaś klasę i ona ma pewne, intowe pole.. nazwijkmy je "random". I teraz tak. Chciałbym aby to pole zostało update'owane za każdym razem gdy:
- wywołuję odpowiednią metodę tej klasy
- tworzę obiekt tej klasy
- pobieram tą obiekt tej klasy z bazy danych (ta klasa to encja).
Po prostu chciałbym, aby przy jakiejkolwiek operacji na tym obiekcie to pole automatycznie się updatowało. Najbardziej prymitywny sposób no to sobie stworzyć do tego metodę publiczną i wywoływać w każdym potrzebnym miejscu, ale to przecież zaśmieca kod niepotrzebną logiką. Ta metoda wyglądałaby mniej więcej tak:
void generateNewRandomValue() {
this.random = new Random().nextInt();
}
Lepiej to zrobić jako aspekt. Tylko nie wiem teraz czy mogę ukryć to pole i nie udostępniać żadnej publicznej metody modyfikującej to pole czy lepiej udostępnić tą metodę i za pomocą niej w aspekcie generować tego nowego randoma. No ale to drugie rozwiązanie zaśmieca api klasy, bo tak naprawdę nic poza aspektem nie będzie wywoływało tej metody.
Porady ?
Pozdrawiam