美文网首页
观察者模式

观察者模式

作者: 靳兆鲁 | 来源:发表于2019-08-27 16:57 被阅读0次
    /**
    *程序员是观察者
    */
    public class Coder implements Observer {
       public String name;
    
      public Coder(name){
        this.name = name;
      }
    
      @Override
      public void update(Observable o, Object arg) {
        System.out.println(name + “收到了更新 “ + arg);
      }
    
      @Override
      public String toString() {
        return “码农:” + name;
      }
    }
    
    /**
    *DevTechFrontier 即开发技术前线,这个网站是被观察者,当他有更新时所有的观察者(这里指的是程序员都会收到更新的相应通知)
    */
    public class DevTechFrontier extends Observable {
        public void postNewPublication(String content) {
          //标识状态或内容发生改变
          setChanged();
          //通知所有观察者
          notifyObservers(content);
        }
    }
    
    //测试代码
    public class Test {
      public static void main() {
        //被观察角色
        DevTechFrontier devTechFrontier = new DevTechFrontier();
        //观察者
        Coder mrsimple = new Coder(“mr.simple”);
        Coder coder1 = new Coder(“coder-1”);
        Coder coder2 = new Coder(“coder-2”);
        Coder coder3 = new Coder(“coder-3”);
    
        //将观察者注册到可观察对象的观察者列表中
        DevTechFrontier.addObserver(mrsimple);
        DevTechFrontier.addObserver(coder1);
        DevTechFrontier.addObserver(coder2);
        DevTechFrontier.addObserver(coder3);
    
        //发布消息
        DevTechFrontier.postNewPublication(“新的一期开发技术前线周报上线啦”);
      }
    }
    
    //运行结果
    mr.simple收到了更新新的一期开发技术前线周报上线啦
    coder-1收到了更新新的一期开发技术前线周报上线啦
    coder-2收到了更新新的一期开发技术前线周报上线啦
    coder-3收到了更新新的一期开发技术前线周报上线啦
    

    相关文章

      网友评论

          本文标题:观察者模式

          本文链接:https://www.haomeiwen.com/subject/biaeectx.html