Witam
Poszukują od jakiegoś czasu rozwiązania następujacego problemu. Chciałbym napisać mechaniz informujący, że został dodany lub usuniety element z kolekcji np ArrayList, co pozwoli mi wykonać przewidziane zachowanie przez kod (coś w rodzaju ActionLitener dla buttonów). Czy istnieje jakiś gotowy mechanizm w javie? Jak podejść do tego problemu?
Z góry dziękuję za zainteresowanie
Chyba nie ma odpowiedniego mechanizmu w Javie. Możesz wszystkie wywołania postaci kontener.add(element) zastąpić metodą add(kontener,element) o takim mniej więcej działaniu
boolean add(ArrayList kontener,.. obiekt)
{
boolean result=kontener.add(obiekt);
if(result)
//obsługa lub wygenerowanie jakiegoś zdarzenia
return result;
}
up:
Rozwiązanie nie wymaga przecież użycia metod statycznych. Wystarczy dziedziczyć po klasie ArrayList i poprzeciążać metody. Metody, które powinny wysyłać zdarzenia powinny być przeciążone, zawierać instrukcję do wysyłania zdarzenia, a potem super.metoda().
W Javie są nawet gotowe klaski do obsługi takich Listenerów o jakie ci chodzi. Są to klaski java.beans.PropertyChangeListener i java.beans.PropertyChangeSupport.
http://download.oracle.com/javase/tutorial/javabeans/properties/bound.html
Wibowit napisał(a)
up:
Rozwiązanie nie wymaga przecież użycia metod statycznych. Wystarczy dziedziczyć po klasie ArrayList i poprzeciążać metody. Metody, które powinny wysyłać zdarzenia powinny być przeciążone, zawierać instrukcję do wysyłania zdarzenia, a potem super.metoda().W Javie są nawet gotowe klaski do obsługi takich Listenerów o jakie ci chodzi. Są to klaski java.beans.PropertyChangeListener i java.beans.PropertyChangeSupport.
http://download.oracle.com/javase/tutorial/javabeans/properties/bound.html
Raczej Observer i Observable z API. Property sa od tego, aby powiadamiac czy sie zmienila jakas wlasciwosc. Dodanie czegos to nie jest zmiana wlasciwosci, ew. na sile 'size'.
Dzięki za pomoc. Chyba to jest to czego szukałem. Przetestuje funkcjonalność do swojej aplikacji. Tutaj prosty przykład z zastosowania:
http://www.java2s.com/Code/Java/Design-Pattern/UsingObserverpatternwithtwoobserversobservingachanginginteger.htm
Pozdrawiam!!!