观察者模式

来源:互联网 发布:php k图 编辑:程序博客网 时间:2024/06/05 11:26

1类图

这里写图片描述

2定义:

2.1 定义了对象间的一种一对多的依赖关系,以便一个对象的状态发生变化时,所有依赖于它的对象都得到通知并自动刷新。

3应用场景:

3.1 关联行为场景,需要注意得是,关联行为是可拆分的,而不是“组合”是。

3.2 事件多级触发场景。

3.3 跨系统的消息交换场景,如消息队列,事件总线的处理机制 。

4观察者

public class Coder implements Observer {    public String name;    public Coder(String name){        this.name = name;    }    @Override    public void update(Observable o, Object arg) {        System.out.println("Hi, " + name + ", 海贼王更新了,内容 : " + arg);    }    @Override    public String toString() {        // TODO Auto-generated method stub        return "海迷 : " + name;    }}

5被观察者

public class DevTechFrontier extends Observable {    public void postNewPublication(String content){        setChanged();        notifyObservers(content);    }}

6测试

public class Test {    public static void main(String[] args) {        DevTechFrontier devTechFrontier = new DevTechFrontier();        Coder h1 = new Coder("海迷-1");        Coder h2 = new Coder("海迷-2");        Coder h3 = new Coder("海迷-3");        devTechFrontier.addObserver(h1);        devTechFrontier.addObserver(h2);        devTechFrontier.addObserver(h3);        devTechFrontier.postNewPublication("索罗开眼了!");    }}