java设计模式----观察者模式

来源:互联网 发布:上海商友软件 编辑:程序博客网 时间:2024/05/12 19:18

分为四部分:抽象主题角色,具体主题角色,抽象观察者角色,具体观察者角色


主题角色中具有观察者对象列表,当主题状态改变时,可以通知所有观察者角色。观察者之间不知道相互间的存在。

使用场景:当一个对象改变时,需要改变其他对象的场景中运用。


抽象主题角色:

public interface Subject {    public void addObserver(Observer observer);    public void removeObserver(Observer observer);    public void notifyObservers();}

具体主题角色:

public class Boss implements Subject {    private List<Observer> list = new ArrayList<Observer>();    @Override    public void addObserver(Observer observer) {        list.add(observer);    }    @Override    public void removeObserver(Observer observer) {        list.remove(observer);    }    @Override    public void notifyObservers() {        for(Observer observer:list){            observer.update();        }    }}

抽象观察者角色:

public interface Observer {    public void update();}

具体观察者角色:

public class ObserverA implements Observer {    @Override    public void update() {        System.out.println("员工A关掉视频");    }}

public class ObserverB implements Observer {    @Override    public void update() {        System.out.println("员工B关掉股票");    }}

测试:

public class Test {    public static void main(String[] args){        Boss boss = new Boss();        Observer observerA= new ObserverA();        Observer observerB= new ObserverB();        boss.addObserver(observerA);        boss.addObserver(observerB);        boss.notifyObservers();    }}

结果:

员工A关掉视频员工B关掉股票


0 0