Полагаю, вы могли бы видеть образец наблюдателя как нечто, что можно было бы использовать подобно обратным вызовам. Вы проверили их?
В книге Прагматичный программист они упоминают пример человека, ожидающего, чтобы его посадили на рейс. Вместо того, чтобы этот человек постоянно спрашивал стойку регистрации, можно ли ей идти на борт (опрос), стойка регистрации публично сообщает всем, кто заинтересован, когда рейс будет готов.
Псевдокод для этого примера может выглядеть примерно так:
class Clerk implements CheckInNotifyer {
BunchOfObservers observers = new Bunch();
public void addObserver(CheckInObserver observer) {
observers.add(observer);
}
private void notifyListeners() {
observers.all.notifyCheckIn(new CheckInEvent());
}
}
class Passenger implements CheckInObserver {
public void notifyCheckIn(CheckInEvent event) {
event.getPlane().board();
}
}
class WaitingArea {
public init() {
Passenger passenger = new Passenger();
Clerk clerk = new Clerk();
clerk.addObserver(passenger);
}
}