Cocos观察者设计模式和通报机制
天气一直讨论的英国最喜欢的话题,近期天气变化几年已成为非常关注的中国人的话题。会依据天气预报决定是坐地铁还是开车上班,我的女儿也会依据天气预报决定明天穿哪件衣服。于是我在移动公司为我的手机定制了天气预报短信通知服务,它的工作模型如图所看到的。
每天气象局将天气预报信息投送给移动运营商,移动运营商的短信中心负责把天气预报发送给定制过这项服务的手机。
在软件系统中,一个对象状态改变也会连带影响其它非常多对象的状态发生改变。能够实现这一需求的设计方案有非常多,但能够做到复用性强且对象之间匿名通信的。观察者模式是当中最为适合的一个。
实现原理
它有4个角色,详细例如以下所看到的。
抽象主题(Subject)。抽象主题是一个接口,它是一个观察者集合容器,定义了加入观察者(add)函数、移除观察者(remove)函数和为全部观察者发送通知的函数(notifyObserver)。
抽象观察者(Observer)。
抽象观察者是一个接口,它有一个更新(update)函数。
详细观察者(ConcreteObserver)。Observer接口的详细实现。
详细主题(ConcreteSubject)。Subject接口的详细实现。
引入Subject和Observer这两个接口后,不仅提高了系统的可复用性。还减少了耦合度。由于ConcreteSubject仅仅须要一个实例。所以我们採用单例设计模式实现。观察者模式还能够有其它变形,若要深入了解,能够參考GoF。
通知机制
在Cocos2d-x框架中,观察者模式的详细应用有一种通知(notification)机制。
通知机制与托付机制不同的是。前者是“一对多”的对象之间的通信,后者是“一对一”的对象之间的通信。
如图所看到的,在通知机制中对某个通知感兴趣的全部对象都能够成为接收者。
首先,这些对象须要向通知中心(__NotificationCenter)调用addObserver函数进行注冊。在投送对象投送通知给通知中心时。通知中心就会把通知广播给注冊过的接收者。全部的接收者都不知道通知是谁投送的。更不关心它的细节。
投送对象与接收者是一对多的关系。接收者假设对通知不再关注,会给通知中心调用removeObserver或removeAllObservers函数解除注冊,以后不再接收通知。
在參数回传方面通知机制要比托付模式好非常多。通知机制能够实现一对多參数传递。而托付模式仅仅是一对一參数传递。
本书交流讨论站点:http://www.cocoagame.net
《Cocos2d-x实战 C++卷》现已上线,各大商店均已开售:
京东:http://item.jd.com/11584534.html
当当:http://product.dangdang.com/23606265.html
互动出版网:http://product.china-pub.com/3770734
《Cocos2d-x实战 C++卷》源代码及样章下载地址:
源代码下载地址:http://51work6.com/forum.php?mod=viewthread&tid=1155&extra=page%3D1
样章下载地址:http://51work6.com/forum.php?mod=viewthread&tid=1157&extra=page%3D1
版权声明:本文博客原创文章,博客,未经同意,不得转载。
Cocos观察者设计模式和通报机制的更多相关文章
- Cocos中的观察者设计模式与通知机制
观察者(Observer)模式也叫发布/订阅(Publish/Subscribe)模式,是 MVC( 模型-视图-控制器)模式的重要组成部分.天气一直是英国人喜欢讨论的话题,而最近几年天气的变化也成为 ...
- Java事件监听机制与观察者设计模式
一. Java事件监听机制 1. 事件监听三要素: 事件源,事件对象,事件监听器 2. 三要素之间的关系:事件源注册事件监听器后,当事件源上发生某个动作时,事件源就会调用事件监听的一个方法,并将事件对 ...
- Java常用类库——观察者设计模式
观察者设计模式 现在很多的购房者都在关注着房子的价格变化,每当房子价格变化的时候,所有的购房者都可以观察得到.实际上以上的购房者都属于观察者,他们都关注着房子的价格. 如果要想实现观察者模式,则必须依 ...
- (java)从零开始之--观察者设计模式Observer
观察者设计模式:时当一个对象发生指定的动作时,要通过另外的对象做出相应的处理. 步骤: 1. A对象发生指定的动作是,要通知B,C,D...对象做出相应的处理,这时候应该把B,C,D...对象针对A对 ...
- Java 反射 设计模式 动态代理机制详解 [ 转载 ]
Java 反射 设计模式 动态代理机制详解 [ 转载 ] @author 亦山 原文链接:http://blog.csdn.net/luanlouis/article/details/24589193 ...
- 《Head First设计模式》批注系列(一)——观察者设计模式
最近在读<Head First设计模式>一书,此系列会引用源书内容,但文章内容会更加直接,以及加入一些自己的理解. 观察者模式(有时又被称为模型-视图(View)模式.源-收听者(List ...
- Unity 3D观察者设计模式-C#委托和事件的运用
C#观察者设计模式 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享.心创新! ...
- IOS设计模式第七篇之观察者设计模式
版权声明:原创作品,谢绝转载!否则将追究法律责任. 观察者设计模式 在观察者设计模式里面,一个对象通知其他的对象一些状态的改变.涉及这些对象不需要知道另一个对象---因此鼓励解耦设计模式.这个设计模式 ...
- javaEE之--------统计站点在线人数,安全登录等(观察者设计模式)
整体介绍下: 监听器:监听器-就是一个实现待定接口的普通Java程序,此程序专门用于监听别一个类的方法调用.都是使用观察者设计模式. 小弟刚接触这个,做了些简单的介绍.大神请绕道,技术仅仅是一点点, ...
随机推荐
- Linux虚拟文件系统VFS解决
参考<Linux内核设计与实现> 虚拟文件系统(VFS)它是linux核心和详细I/O一个普通的访问接口之间的包装设备,通过这层界面,linux内核能够以同一的方式訪问各种I/O设备. 虚 ...
- 玩转Web值jquery(一)---对表单中的某一标签批量处理(以input为例)
jquery可以对form进行操作,以批量操作某一标签,这里以input标签为例总结. 示例一:对删除infoForm表单的input的所有readonly属性 $("#infoForm i ...
- UBUNTU12.04下安装配置体验gnome3
年. ubuntu12.04默认采用unity界面,但是自己更加喜欢gnome3的操作方式. 安装gnome3: sudo apt-get install gnome-shell 其实安装成功后,注 ...
- org.apache.subversion.javahl.ClientException: svn: E155021: This client is too old to work with the
org.apache.subversion.javahl.ClientException: svn: E155021: This client is too old to work with the ...
- sails不是内部或外部命令的解决方案
1 安装好node 2 安装sails 打开cmd窗口,用命令 npm -g install sails 安装sails 安装完成后,用命令 sails new testProject 创建项目 会 ...
- CentOS配置smaba与Windows共享文件
操作环境:CentOS 6.5 64bit Linux与Linux间通过什么共享文件呢--NFS,Windows与Windows之间呢--共享文件功能就OK了,那Windows与Linux之间呢? 这 ...
- org.apache.jasper.JasperException: An exception occurred processing JSP page /admin/jiaoshi/daochuEx
org.apache.jasper.JasperException: An exception occurred processing JSP page /admin/jiaoshi/daochuEx ...
- mac 下有些工具 app 推荐
打开推荐报价mac在工具app Evernote的 Evernote的贬值,课堂笔记软件,其主要功能是记录笔记,假设你想,它可用于使todo list, 甚至gtd, 或收集的知识归纳 Doit.im ...
- Myeclipse它显示了一个目录的结构,而不是包
今天Myeclipse新project,编写代码,查找workspace空间展示project在包装和class所有平行结构,看的很不顺,有两个原因,第一,您可能无法切换到Package worksp ...
- Redis 的性能
Redis 的性能幻想与残酷现实 2011 年,当初选择 Redis 作为主要的内存数据存储,主要吸引我的是它提供多样的基础数据结构可以很方便的实现业务需求.另一方面又比较担心它的性能是否足以支撑,毕 ...