观察者模式总结如下(可点击放大):
示例:
public class ObserverPattern {
public static void main(String[] args) {
Subject subject = new ConcreteSubject();
Observer observer1 = new ConcreteObserver1();
Observer observer2 = new ConcreteObserver2();
subject.add(observer1);
subject.add(observer2);
subject.notifyObserver();
}
}
abstract class Subject {
protected List<Observer> observerList = new ArrayList<>();
//增加观察者方法
public void add(Observer observer) {
observerList.add(observer);
}
//删除观察者方法
public void remove(Observer observer){
observerList.remove(observer);
}
public abstract void notifyObserver(); //通知观察者方法
}
class ConcreteSubject extends Subject {
@Override
public void notifyObserver() {
System.out.println("具体目标发生变化...");
System.out.println("==========");
for (Observer ob : observerList) {
ob.response();
}
}
}
//抽象观察者
interface Observer {
void response(); //反应
}
class ConcreteObserver1 implements Observer {
@Override
public void response() {
System.out.println("具体观察者1作出反应!");
}
}
class ConcreteObserver2 implements Observer {
@Override
public void response() {
System.out.println("具体观察者2作出反应!");
}
}