设计模式--观察者模式

来源:互联网 发布:windows程序设计算c 编辑:程序博客网 时间:2024/05/24 13:28

1 观察者模式定义了一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在变化时,会通知所有的观测者对象,使他们能自动更细自己。具体代码如下:
观测者抽象类:

public abstract class Observer {    protected String name;    protected Subject subject;    public Observer(String name, Subject subject) {        this.name = name;        this.subject = subject;    }    public abstract void update();}

两个实现类:

public class StockObserver extends Observer{    public StockObserver(String name, Subject subject) {        super(name, subject);        // TODO Auto-generated constructor stub    }    @Override    public void update() {        // TODO Auto-generated method stub        System.out.println(name+"关闭炒股软件,继续工作。。。");    }}public class NBASObserver extends Observer{    public NBASObserver(String name, Subject subject) {        super(name, subject);        // TODO Auto-generated constructor stub    }    @Override    public void update() {        // TODO Auto-generated method stub        System.out.println(name+subject.getAction()+"关闭NBA直播,继续工作。。。");    }}

通知者接口

public abstract class Subject {    protected String action;    public List<Observer> lstObserver=new ArrayList<Observer>();    public Subject(String action) {        this.action = action;    }    public void add(Observer observer){        lstObserver.add(observer);    }    public void setAction(String action) {        this.action = action;    }    public String getAction(){        return this.action;    }    public void remind(){        for (Observer observer : lstObserver) {            observer.update();        }    }}

两个实现类(可将remind()交给子类实现,):

public class NBASObserver extends Observer{    public NBASObserver(String name, Subject subject) {        super(name, subject);        // TODO Auto-generated constructor stub    }    @Override    public void update() {        // TODO Auto-generated method stub        System.out.println(name+subject.getAction()+"关闭NBA直播,继续工作。。。");    }}public class StockObserver extends Observer{    public StockObserver(String name, Subject subject) {        super(name, subject);        // TODO Auto-generated constructor stub    }    @Override    public void update() {        // TODO Auto-generated method stub        System.out.println(name+"关闭炒股软件,继续工作。。。");    }}

看观察者模式看得头有点懵逼,据说好像是Spring依赖倒转的原理,未完待续。。。
参考书籍《大话设计模式》

原创粉丝点击