Слушатель является распространенной формой реализации observerdesign patter в Java. Этот метод также упоминается как callback, который является термином, исходящим из мира процедурных языков.
Наблюдатели регистрироваться по наблюдаемой, который, в свою очередь, вызывает назад наблюдателей всякий раз, когда какое-то событие происходит или когда они должны быть уведомлены о чем-то.
Многих рамочные библиотеки играют роль наблюдаемого, например .:
- Вы регистрируете себя (то есть ваша реализацию интерфейса слушателя) в качестве слушателя входящих сообщений в сообщениях промежуточного программного обеспечения.
- Вы регистрируетесь в качестве слушателя некоторых изменений, сделанных пользователем в операционной системе.
- Вы регистрируетесь в качестве слушателя событий GUI, таких как кнопка нажата.
Пример в Java-код:
Часть 1 - Наблюдаемый объект
import java.util.LinkedList;
import java.util.List;
public class Observable {
private List<Observer> observers;
public Observable() {
observers = new LinkedList<>();
}
public void addObsever(Observer observer) {
observers.add(observer);
}
private void notifyObservers(String whatHappened) {
for (Observer observer : observers) {
observer.onSomethingHappened(whatHappened);
}
}
public void doSomeStuff() {
// ...
// Do some business logic here.
// ...
// Now we want to notify all the listeners about something.
notifyObservers("We found it!");
// ...
// Do some business logic here
// ...
}
}
Часть 2 - Интерфейс наблюдатель/слушатель
public interface Observer {
void onSomethingHappened(String whatHappened);
}
Часть 3 - Базовая реализация интерфейса наблюдатель/слушатель
public class MyObserver implements Observer {
@Override
public void onSomethingHappened(String whatHappened) {
System.out.println(whatHappened);
}
}
Часть 4 - Собираем все вместе
public class Main {
public static void main(String[] args) {
// Create the observable.
Observable myObservable = new Observable();
// Create the observers (aka listeners).
Observer myObserverA = new MyObserver();
Observer myObserverB = new MyObserver();
// Register the observers (aka listeners).
myObservable.addObsever(myObserverA);
myObservable.addObsever(myObserverB);
myObservable.doSomeStuff();
}
}
И результат на стандартный вывод будет:
We found it!
We found it!
Не могли бы вы вставить фрагмент кода, который путает вас? Слушатели несколько общие, поэтому их трудно объяснить без конкретного примера кода. – dasblinkenlight
А, конечно. У меня не было точного кода, который я застрял. Я просто просил о помощи, и кто-то рекомендовал использовать фрагменты кода. Я отправлю его сейчас. –
Возможно, вы ищете объяснение шаблона наблюдателя (это общая концепция, а не только конкретная Java). – Pshemo