zoukankan      html  css  js  c++  java
  • 观察者模式

            一、模式的动机        

            建立一种对象与对象之间的依赖关系。一个对象发生变化时将自己主动通知其它对象。其它对象将对应做出反应。发生改变的对象称为观察目标,而被通知的对象称为观察者。

                     

            二、模式定义

            观察者模式(Observer Pattern):定义了对象间一种一对多的依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自己主动更新。

            三、模式结构

             

            四、模式分析

            1)观察者模式描写叙述了怎样建立对象与对象之间的依赖关系。

            2)这一模式中的关键对象是观察目标和观察者。一个目标能够有多个观察者,当观察目标的状态发生变化时。全部的观察者都将得到通知。

            3)观察者得到通知后。即时更新自己的状态,与观察目标同步。

            五、模式代码

    1)抽象目标类

        public abstract class Subject {
            protected ArrayList observers =new ArrayList();//观察者数组
            public abstract void attach(Observer1 observer);//加入观察者
            public abstract void detach(Observer1 observer);//删除观察者
            public abstract void nontify();//通知观察者
        }
    2)详细目标类

        public class ConcreteSubject extends Subject {
            //private Observer1 observer;
            public  void attach(Observer1 observer){
                observers.add(observer);
            }
            public  void detach(Observer1 observer){
                observers.remove(observer);
            }
            public  void nontify() {
                //使用for遍历循环通知全部观察者
                for(Object obs:observers){
                    ((Observer1)obs).update();
                }
            }       
        }
    3)抽线观察者

        public interface Observer1 {
            public void  update();
        }
    4)详细观察者

        public  class ConcreteObserver implements Observer1 {
            public void update() {
                //更新相关的方法
            }
        }

    版权声明:本文博主原创文章。博客,未经同意不得转载。

  • 相关阅读:
    python 3.6.2 使用VScode 安装requests包
    JExcel读取Excel,完成随机数对应学号,随机选取学生姓名
    HashMap和Map的道道
    腾讯云主机windows 2012 r2搭建ftp服务器
    关于网站域名访问出现welcome to nginx 的问题
    腾讯云主机windows 2012 r2标准版&&搭建java环境(jdk+tomcat)
    Anaconda 安装+使用+换源+更新
    已知三点求平面方程、平面法向量和点到平面的距离
    Open Cascade:计算体积
    VS2015安装QT插件
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4878847.html
Copyright © 2011-2022 走看看