【JAVA设计模式】19.观察者模式
观察者模式分为观察者和通知者,当观察者注册到通知者时,通知者可以将信息通知到每一个观察者“
UML图:
观察者接口及其实现类:
interface Observer {
void update();
}
class ConcreteObserver implements Observer {
private String observerState;
public ConcreteObserver(String observerState) {
this.observerState = observerState;
}
@Override
public void update() {
System.out.println(observerState + " updated to 777");
observerState = "777";
}
}
通知者接口及其实现类:
interface Subject {
void attach(Observer o);
void detach(Observer o);
void notify1();
}
class ConcreteSubject implements Subject {
private List<Observer> list = new ArrayList<>();
@Override
public void attach(Observer observer) {
list.add(observer);
}
@Override
public void detach(Observer observer) {
list.remove(observer);
}
@Override
public void notify1() {
for (Observer observer : list) {
observer.update();
}
}
}
在客户端中调用时,将需要被观察的观察者对象注册至通知者中,调用通知者的通知方法即可通知所有的观察者:
Observer observer1 = new ConcreteObserver("observer 1");
Observer observer2 = new ConcreteObserver("observer 2");
Subject subject = new ConcreteSubject();
subject.attach(observer1);
subject.attach(observer2);
subject.notify1();
JAVA代码:https://github.com/zhuaizhuaixi/design-pattern/tree/master/src/designpattern/behavioral/memento