• java设计模式----观测者模式


    目录

      1.介绍观测者模式

      2.jdk自带的观测者模式实现

      3.自己实现一个观测者模式

    一、介绍建观测模式

      观测者模式是一种比较重要的设计模式,观测者模式也叫发布/订阅模式。它在angular、vue、等前端框架中的使用是非常频繁的。观测者模式本身是一种mv模型,它能时时的更新我们的数据,观测者模式本身提供一种异步操作。

    二、jdk自带的观测者模式实现

      在jdk中有自带的类来实现观测者模式,在jdk1.9之后这个类宣布过时了,因为这个模式的实现相对简单。

      jdk中自带的观测者模式使用入下:

      1.创建一个能被观测的对象:

      这个对象需要继承Observable来声明是一个能被观测的对象

    package observer;
    
    import java.util.Observable;
    
    /**
     * 能被观测的对象
     * @author HYSong
     * 
     */
    public class Data extends Observable{
        int data;
        
        /**
         * @param data 要设置的 data
         */
        public void setData(int data) {
            this.data = data;
            //改变状态
            setChanged();
            //通知观测者
            notifyObservers(data);
        }
        
    }
    Data

      2.创建一个观测者的对象

      这个对象需要实现Observer接口来声明一个观测者,并重写update方法

    package observer;
    
    import java.util.Observable;
    import java.util.Observer;
    
    /**
     * 观测者
     * @author HYSong
     *
     */
    public class View implements Observer{
    
        @Override
        public void update(Observable o, Object arg) {
                    
                display((int)arg);
            
        }
        
        void display(int arg) {
            System.out.println("Data:"+arg);
        }
    }
    View

      如果一个被观测对象绑定了多个观测者的话,那么当改变了一个事件时,会被推送到多个观测者上,所有观测者的update方法都将被执行。

      如果一个观测者观测了多个被观测者的话,我们可以判断类型这个对象的类型是否为观测者的对象类型。这样就可以区分是来自哪个推送者的消息。

    package observer;
    
    import java.util.Observable;
    import java.util.Observer;
    
    /**
     * 观测者
     * @author HYSong
     *
     */
    public class View implements Observer{
    
        @Override
        public void update(Observable o, Object arg) {
            if(o instanceof Data) {
                display((int)arg);
            }
        }
        
        void display(int arg) {
            System.out.println("Data:"+arg);
        }
    }
    View Code

      

      

      

  • 相关阅读:
    python常用模块②
    python常用模块①
    面向对象相关部分双下划线方法补充
    面向对象进阶 上
    面向对象初识④
    面向对象初识③
    综合架构-负载均衡
    wecent 搭建
    综合架构--存储
    综合架构--备份
  • 原文地址:https://www.cnblogs.com/bananafish/p/10385570.html
Copyright © 2020-2023  润新知