1、观察者模式简述
定义对象间的一种一对多的依赖关系,主要解决当一个对象的状态发生改变时,所有订阅它的对象都得到通知并且自动更新状态。
2、UML类图
3、代码实现
public interface Subject {
void addObserver(Observer observer);
void removeObserver(Observer observer);
void notifyObservers(String message);
}
public class ConcreteSubject implements Subject {
private List<Observer> observerList = new ArrayList<>();
@Override
public void addObserver(Observer observer) {
observerList.add(observer);
}
@Override
public void removeObserver(Observer observer) {
observerList.remove(observer);
}
@Override
public void notifyObservers(String message) {
for (Observer observer : observerList) {
observer.update(message);
}
}
}
public interface Observer {
void update(String message);
}
public class Client {
public static void main(String[] args) {
Subject subject = new ConcreteSubject();
Observer a = new ConcreteObserver(subject, "a");
Observer b = new ConcreteObserver(subject, "b");
subject.notifyObservers("hello,world");
}
}
public class ConcreteObserver implements Observer {
private Subject subject;
private String name;
private String message;
ConcreteObserver(Subject subject, String name) {
this.subject = subject;
subject.addObserver(this);
this.name = name;
}
@Override
public void update(String message) {
this.message = message;
System.out.println(name + " get " + message);
}
}