博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
读《HeadFirst设计模式》笔记之观察者模式
阅读量:6582 次
发布时间:2019-06-24

本文共 1115 字,大约阅读时间需要 3 分钟。

  hot3.png

观察者模式:在对象之间定义一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象都会收到通知,并自动更新。

举个栗子:

在京东买过东西的都知道,商品详情页有个“降价通知”。顾客甲告诉京东:“在这个商品降价时通知我啊”;客户乙也告诉京东:“在这个商品降价时通知我啊”。那么当这个商品降价时,京东就会通知客户甲和客户乙。

京东的这个商品就是一个主题,客户甲和客户乙就是一个观察者。当主题发生变化时,分别通知所有观察者变化的信息。

当客户乙已经买了这个商品,不想再接收这个通知了,那么他会告诉京东:“这个商品降价不用通知我了,我已经买了”。那么京东就会将客户乙这个观察者从观察者列表中删掉,以后就不会通知这个观察者了。

实现:

主题接口:

public interface Subject {    // 加入观察者列表    registerObserver(Observer o);    // 移除观察者    removeObserver(Observer o);        // 通知观察者    notifyObservers(int paramA, string paramB, Object paramC);}

主题实现:

public class ConcreteSubject implement Subject {    ArrayList
obServerList = new ArrayList(); // 将观察者加入到观察者列表中 public void registerObServer(Observer o){...} // 将观察者从观察者列表中移除 public void removeObServer(Observer o){...} // 通知所有观察者 public void notifyObServer(int paramA, string paramB, Object paramC){ for (int i=0; i

定义观察者接口:

public interface ObServer {    public void update(int paramA, string paramB, Object paramC);}

创建观察者:

public class ConcreteObServer {    public void update(paramA, paramB, paramC) {...}}

转载于:https://my.oschina.net/suyain/blog/1923128

你可能感兴趣的文章
Node.js 解析gzip网页(https)
查看>>
ES6的export与Nodejs的module.exports
查看>>
010-java 表单方式或者base64方式上传图片,后端使用nutz的post转发图片到另一个请求...
查看>>
hive中的bucket table (输入文件是一个的话,map任务只能启动一个 ,给力啊)
查看>>
CentOS中安装MySQL数据库
查看>>
搜索引擎日志分析
查看>>
双语:Interprocess Communication 进程通信
查看>>
Git 使用初体验
查看>>
【转载】安卓APP架构
查看>>
Nodejs在Ubuntu的部署和配置 samba
查看>>
android使用遥控器模拟鼠标拖拽操作
查看>>
uc/os任务管理
查看>>
apache也有fastcgi模块
查看>>
发布一个TCP 吞吐性能测试小工具
查看>>
[置顶] HMM Tutorial 隐马尔科夫模型
查看>>
2.17 数组循环移位
查看>>
AddComponentRecursively
查看>>
Windows平台分布式架构实践 - 负载均衡(下)
查看>>
cpg数据库处理_找到未提取的pdf
查看>>
js中判断浏览器版本
查看>>