观察者模式:定义一种一对多的依赖关系,让多个观察者对象同事监听一个主题对象,当主题对象变化是,会通知所有观察者对象,使他们能更新自己
import java.util.ArrayList;
import java.util.List;
/**
* 观察者模式:
* 关键:
* subject接口: 主题或抽象通知,定义添加方法 删除方法 通知方法
* 具体Subject: 实现subject接口,(通知方法循环添加的observer,
* 并调用具体observer中的更新方法)
* observer接口:观察者,定义更新方法
* 具体observer:具体观察者,实现具体更新方法
* @author zbl
*
*/
public class ObserverCustomer {
public static void main(String[] args) {
MySubject subject = new MyBoss();
MyObserver observer = new ConcreteObserver();
subject.add(observer);
subject.mynotify();
}
}
//主题或抽象通知
interface MySubject{
public void add(MyObserver observer);
public void remove(MyObserver observer);
public void mynotify();
}
//具体主题
class MyBoss implements MySubject{
private List<MyObserver> list = new ArrayList<MyObserver>();
@Override
public void add(MyObserver observer) {
list.add(observer);
}
@Override
public void remove(MyObserver observer) {
list.remove(observer);
}
@Override
public void mynotify() {
for(MyObserver obj : list){
obj.update();
}
}
}
//抽象观察者
interface MyObserver{
public void update();
}
//具体观察者
class ConcreteObserver implements MyObserver{
@Override
public void update() {
System.out.println("xiix");
}
}