Javascript乱弹设计模式系列 - 观察者模式(Observer)
2010-09-14 13:35:51 来源:WEB开发网核心提示:本文示例源代码或素材下载 概述在现实生活中,存在着“通知依赖关系”,Javascript乱弹设计模式系列 - 观察者模式(Observer),如在报纸订阅的服务,只要读者(订阅者)订购了《程序员》的期刊杂志,利用第0篇文章面向对象基础以及接口和继承类的实现中的Interface.js类(
本文示例源代码或素材下载
概述
在现实生活中,存在着“通知依赖关系”,如在报纸订阅的服务,只要读者(订阅者)订购了《程序员》的期刊杂志,那么他就订阅了这个服务,他时刻“监听”着邮递员(出版者)来投递报纸给他们,而邮递员(出版者)只要报社有新刊杂志传达给他(就是状态发生了变化),邮递员(出版者)就随时投递(通知)订阅了服务的读者;另一方面,如果读者不想在继续订购(取消通知)《程序员》的杂志了,那么邮递员就不在投递(通知)这些读者了。---这就是典型的出版者和订阅者的关系,而这个关系用一个公式来概括:
出版者 + 订阅者 = 观察者模式
定义
观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,他的所有依赖者都会收到通知并自动更新。
类图
示例分析
现在开始利用观察者模式来应用到项目的一个场景中去,并且层层剖析一下。
有这样一个场景,一个购书网站,用户提交上去一个订单,网站系统只要有订单上来,会采取如下操作:(为了简化,我这里其实只是简单的提交)
一、产生一条通知用户“已购买”记录的短信息(该短信箱还会有其他记录,如交友等等);
二、在浏览器上显示你的订单名片;
三、该条订单提交上服务器,保存到数据库或者其它任何存储介质中去,最后显示你的购书记录;
那么开始我的设计:
1. 网站上添加IPublisher.js,它作为系统的出版者“接口”,利用第0篇文章面向对象基础以及接口和继承类的实现中的Interface.js类(另外,谢谢winter-cn园友提出了些宝贵的建议,目前Interface类还在改善中,这里暂且先用原来的Interface类:
Tags:Javascript 乱弹 设计模式
编辑录入:爽爽 [复制链接] [打 印][]
更多精彩
赞助商链接