Как реализовать собственный шаблон наблюдателя в Java без использования встроенных библиотек?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как реализовать собственный шаблон наблюдателя в Java без использования встроенных библиотек?

Сообщение Anonymous »

Я пытаюсь реализовать шаблон проектирования Observer на Java без использования встроенных библиотек, таких как java.util.Observer или PropertyChangeSupport. Я хочу создать простую систему, в которой наблюдатели (слушатели) смогут подписаться на субъект и получать уведомления при каждом изменении состояния субъекта.

Код: Выделить всё

import java.util.ArrayList;
import java.util.List;

class Subject {
private List observers = new ArrayList();
private String state;

public void subscribe(Observer observer) {
observers.add(observer);
}

public void unsubscribe(Observer observer) {
observers.remove(observer);
}

public void setState(String state) {
this.state = state;
// Notify observers
}

public String getState() {
return state;
}
}

class Observer {
private String name;

public Observer(String name) {
this.name = name;
}

public void update(String state) {
System.out.println(name + ": " + state);
}
}

Что вы пробовали и чего ожидали?

Я попробовал перебрать список наблюдателей в методе setState и вызвать метод обновления для каждого наблюдателя. Я ожидал, что наблюдатели напечатают обновленное состояние, но не знаю, как правильно связать классы субъекта и наблюдателя.
Что на самом деле произошло?

В настоящее время программа компилируется, но не выдает ожидаемый результат, поскольку я не реализовал логику уведомления.
Ожидаемый результат:

Я хочу, чтобы класс субъекта уведомлял все подписанные наблюдатели при каждом изменении состояния, создавая следующий вывод:
Наблюдатель 1: Состояние изменено!

Наблюдатель 2: Состояние изменено!

Подробнее здесь: https://stackoverflow.com/questions/792 ... -in-librar
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»