美文网首页
观察者模式

观察者模式

作者: 金煜博 | 来源:发表于2021-05-05 11:19 被阅读0次

    什么是观察者模式?

    在多个对象之间存在一对多的关系时,被依赖的对象发生改变时,其他依赖的对象就会接收到通知发生变化。(观察者依赖主题,主题信息发生改变就会通知观察者)

    场景描述

    多个观察者订阅主题信息,主题信息发生改变时通知订阅的观察者

    示例图

    图片.png

    示例代码

    1.创建抽象的观察者

    public interface ObServer {
        void updateMsg(String msg);
    }
    

    2.创建抽象的主题

    public abstract class Subject {
        protected List<ObServer> listObServer = new ArrayList<>();
    
        public void addObServer(ObServer obServer) {
            listObServer.add(obServer);
        }
    
        public abstract void notifyObServer(String name);
    }
    

    3.创建具体的主题

    public class ConcreteSubject extends Subject {
        @Override
        public void notifyObServer(String msg) {
            for (int i = 0; i < listObServer.size()  ; i++) {
                    listObServer.get(i).updateMsg(msg);
            }
        }
    }
    

    4.创建具体的观察者

    public class ConcreteObServer implements  ObServer {
        private String name;
    
        public ConcreteObServer(String name) {
            this.name = name;
        }
    
        @Override
        public void updateMsg(String msg) {
            System.out.println(name+"接收到"+msg);
        }
    }
    

    5.启动类

    public class Test {
        public static void main(String[] args) {
            ConcreteSubject concreteSubject = new ConcreteSubject();
            ConcreteObServer concreteObServerOne = new ConcreteObServer("观察者1");
            ConcreteObServer concreteObServerTwo = new ConcreteObServer("观察者2");
            concreteSubject.addObServer(concreteObServerOne);
            concreteSubject.addObServer(concreteObServerTwo);
            concreteSubject.notifyObServer("主题开始发送信息了。。。。。。。");
        }
    }
    

    6.运行结果


    图片.png

    相关文章

      网友评论

          本文标题:观察者模式

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