简易观察者模式

1.发布者

import java.util.Observable;

public class Fabuzhe extends Observable {
    //布置作业的状态信息字符串
    private String info;
    public void setHomework(String info) {

        this.info=info;
        System.out.println("布置的作业是"+info);

        setChanged();
        notifyObservers();
    }
    public String getInfo() {
        return info;
    }
}

2.订阅者

public class Dingyuezhe implements Observer {
    private Observable ob;
    private String name;

    public Dingyuezhe(String name,Observable ob) {
        this.ob = ob;
        this.name=name;
        ob.addObserver(this);
    }

    @Override
    public void update(Observable o, Object arg) {
        Fabuzhe fabuzhe= (Fabuzhe) o;
        String s=fabuzhe.getInfo();
        System.out.println(name+"得到作业信息:"+s);
    }
}

  3.运行代码事例

public class ObserverableTest {
    public static void main(String[] args) {
        Fabuzhe fabuzhe=new Fabuzhe();
        Dingyuezhe dingyuezhe=new Dingyuezhe("张三",fabuzhe);
        Dingyuezhe dingyuezhe2=new Dingyuezhe("李四",fabuzhe);
        fabuzhe.setHomework("数学第五页第八题");
        fabuzhe.setHomework("语文第一页背诵课文");

    }
}

  

运行结果如下:


布置的作业是数学第五页第八题
李四得到作业信息:数学第五页第八题
张三得到作业信息:数学第五页第八题
布置的作业是语文第一页背诵课文
李四得到作业信息:语文第一页背诵课文
张三得到作业信息:语文第一页背诵课文

  

posted @ 2018-10-25 15:06  anxbb  阅读(166)  评论(0编辑  收藏  举报