观察者模式-订报纸,语音呼叫系统实例
2015-12-18 14:26
155 查看
<?php /** * 观察者模式 */ /** * 专门负责观察的类--主呼叫系统 * 1、记录要提醒的对象的名字 * 2、循环调用记录的对象们的一个同名的方法,这个方法具体做什么事情它们自己去决定 */ class Paper { private $_observers = array(); public function register($sub)/*录入要提醒的人的名单*/ { $this->_observers[] = $sub; } public function trigger()/*统一提醒功能*/ { if(!empty($this->_observers)) { foreach($this->_observers as $observer) { $observer->update();//记录的对象们的一个同名的方法,‘同名’用接口来规范 } } } } /** * 观察者们,必须要实现的接口 */ interface Observerable { public function update(); } class Subscriber1 implements Observerable { public function update() { echo '我是1号,主呼叫系统在call我,我该做点什么事情了^_^\n'; } } class Subscriber2 implements Observerable { public function update() { echo '我是2号,主呼叫系统在call我,我该做点什么事情了^_^\n'; } } class Subscriber3 implements Observerable { public function update() { echo '我是3号,主呼叫系统在call我,我该做点什么事情了^_^\n'; } } /*测试*/ $paper = new Paper();//呼叫系统 $paper->register(new Subscriber1());//注册观察者 $paper->register(new Subscriber2()); $paper->register(new Subscriber3()); $paper->trigger();//呼叫系统通知各个观察者,这个动作可以由外界的某件事情来触发,比如到了推送报纸的时间
相关文章推荐
- 学习Selenium2Library的好例子
- grep 命令
- 设计模式之工厂模式
- Exmail 邮件系统维护备忘录
- 新人
- Android多媒体应用
- Evolution Measurement 论文进展 12-18
- gradle详解
- [LeetCode] Best Time to Buy and Sell Stock II
- TestNG简介
- hdu5573 二叉树找规律,二进制相关
- 使用 ssh 从 Gerrit 获取 patch 信息
- 12332
- PHP rabbitmq
- DLL工程调试
- bounds和frame
- 接口适配器模式
- Linux 常用命令
- 现代优化算法 之 模拟退火
- [LeetCode] Dp