一、UML类图
二、代码示例
public class Client {
public static void main(String[] args) {
Subject subject = new ConcreteSubject();
Observer observer = new ConcreteObserver();
subject.add(observer);
subject.notifyObservers();
}
}
public class Subject {
private List<Observer> list = new ArrayList<>();
public void add(Observer observer) {
list.add(observer);
}
public void remove(Observer observer) {
list.remove(observer);
}
public void notifyObservers() {
for (Observer observer : list) {
observer.update();
}
}
}
public class ConcreteSubject extends Subject{
}
public interface Observer {
void update();
}
public class ConcreteObserver implements Observer{
@Override
public void update() { }
}
三、角色介绍
- Client(客户端):
客户端角色,程序的调用者。 - Subject(观察对象):
该角色表示观察对象,定义了注册观察者和删除观察者的方法。 - ConcreteSubject(具体的观察对象):
该角色表示具体的被观察对象,当自身状态发生变化后,会通知所有已经注册的Observer角色。 - Observer(观察者):
该角色负责接收来自Subject角色的状态变化通知。 - ConcreteObserver(具体的观察者):
该角色表示具体的观察者,获取要观察对象的最新状态。
|