定义:当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知依赖它的对象。观察者模式属于行为型模式。
案例代码:
/**
* 主题,维护观察列表,新增,删除,接口
*/
public class MySubject {
private List<MyObserver> myObservers = new ArrayList<>();
public void addOb(MyObserver myObserver){
this.myObservers.add(myObserver);
}
void delOb(MyObserver myObserver){
this.myObservers.remove(myObserver);
}
void tongzhi(){
for (MyObserver ob: myObservers) {
ob.update();
}
}
}
/**
* 具体的主题
*/
public class ConcreteSubject extends MySubject {
public void doSomething() {
//具体业务
System.out.println("测试主题数据有更新。。。。。");
//通知列表中所有的观察者
super.tongzhi();
}
}
观察者代码
/**
* 观察者接口
*/
public interface MyObserver {
void update();
}
public class ConcreteObserver implements MyObserver {
@Override
public void update() {
System.out.println("观察者收到消息,进行处理");
}
}
测试:
public class Client {
public static void main(String[] args) {
//创建一个主题
ConcreteSubject concreteSubject = new ConcreteSubject();
//创建一个观察者
MyObserver concreteObserver = new ConcreteObserver();
//观察
concreteSubject.addOb(concreteObserver);
//搞事情
concreteSubject.doSomething();
}
}
个人理解:观察者模式,就是维护观察者列表,通过遍历该列表中的对象调用其方法。