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

    个人博客

    http://www.milovetingting.cn

    观察者模式

    模式介绍

    观察者模式是一个使用率非常高的模式。它最常用的地方是GUI系统,订阅-发布系统。

    模式定义

    定义对象间一种一对多的依赖关系,使得每当一个对象改变时,所有依赖它的对象得到通知并被自动更新。

    使用场景

    关联行为场景

    事件多级触发场景

    跨系统的消息交换场景,如消息队列、事件总线的处理机制

    简单实现

    定义被观察者

    public class ObservableImpl extends Observable {
    
    	public void notifyChanged() {
    		// 标识状态或者内容发生改变
    		setChanged();
    		// 通知所有观察者
    		notifyObservers();
    	}
    
    }
    

    定义观察者

    public class ObserverImpl implements Observer {
    
    	private String name;
    
    	public ObserverImpl(String name) {
    		super();
    		this.name = name;
    	}
    
    	@Override
    	public void update(Observable arg0, Object arg1) {
    		System.out.println(name + ":收到更新通知");
    	}
    
    }
    

    调用

    public static void main(String[] args) {
    		ObservableImpl observable = new ObservableImpl();
    		ObserverImpl observer1 = new ObserverImpl("observer1");
    		ObserverImpl observer2 = new ObserverImpl("observer2");
    		observable.addObserver(observer1);
    		observable.addObserver(observer2);
    		observable.notifyChanged();
    	}
    

    输出结果

    observer2:收到更新通知
    observer1:收到更新通知
    

    可以看到,通知时是按照注册时的逆序来通知的,查看源码:

    for(int i = aobj.length - 1; i >= 0; i--)
                ((Observer)aobj[i]).update(this, obj);
    
  • 相关阅读:
    H5实现查看图片和删除图片的效果
    HTTP 状态码(HTTP Status Code)
    HashMap详解(基于JDK 1.8)
    FutureTask详解
    ForkJoin框架详解
    final详解
    磁盘管理之inode与block
    如何在CentOS上安装一个2048小游戏
    Linux帮助手册(man)
    Linux入门-基础命令
  • 原文地址:https://www.cnblogs.com/milovetingting/p/12207957.html
Copyright © 2011-2022 走看看