观察者模式
一个对象状态改变,所有的依赖对象都将得到通知. 观察者和被观察者是抽象耦合的 建立了一套触发机制
1.观察者接口
public interface Observer {
public void update(); //每一个实现该接口的实现类都是具体观察者。
}
2.具体实现观察者
public class ConcreteObserver implements Observer {
@Override
public void update() {
System.out.println("收到消息,进行处理");
}
}
3.管理观察者的对象
public class Subject {
//观察者数组
private Vector<Observer> oVector = new Vector<>();
//增加一个观察者
public void addObserver(Observer observer) {
this.oVector.add(observer);
}
//删除一个观察者
public void deleteObserver(Observer observer) {
this.oVector.remove(observer);
}
//通知所有观察者
public void notifyObserver() {
for(Observer observer : this.oVector) {
observer.update();
}
}
}
4.订阅的类实现观察者管理类
public class ConcreteSubject extends Subject {
//具体业务
public void doSomething() {
super.notifyObserver();
}
}
5.只要往订阅对象里面添加观察者, 只要订阅对象doSomething,观察者都会回调.
public class Test {
public void test() {
//创建一个主题
ConcreteSubject subject = new ConcreteSubject();
//定义一个观察者
Observer observer = new ConcreteObserver();
Observer observer2 = new ConcreteObserver();
//观察
subject.addObserver(observer);
subject.addObserver(observer2);
//开始活动
subject.doSomething();
}
}