PHP设计模式 观察者模式(Observer)
2016-03-22 11:49
996 查看
定义
当一个对象状态发生改变时,依赖它的对象全部会收到通知,并自动更新。模式要点
Event:事件 Trigger() 触发新的事件 abstract EventGenerator 事件产生者 Function addObserver(Observer $observer) 添加事件 Function notify() 通知事件产生了 Interface Observer 观察者 Function update($event_info=null) 执行一些更新的操作 $event_info 事件的一些信息代码示例
<?php /** * 观察者模式 * User: pyzn * Date: 2016-03-21 * Time: 17:35 */ /** * Class EventGenerator * 观察者模式的核心,主要是对事件进行约束,保证事件中存在addObserver、notify方法 */ abstract class EventGenerator { private $observers = array(); public function addObserver(Observer $observer) { $this->observers[] = $observer; } public function notify() { foreach ($this->observers as $observer) { $observer->update(); } } } /** * Class Event 具体事件类,这里映射程序中增加的某个事件 * 其继承自事件产生者基类 */ class Event extends EventGenerator { /** * 执行一个事件,并进行通知 */ public function trigger() { echo "事件发生<br />"; $this->notify(); } } /** * Interface Observer * 对事件进行约束,保证事件中有update操作方法 */ interface Observer { function update($event_info = null); } class Observer1 implements Observer { function update($event_info = null) { // TODO: Implement update() method. echo "逻辑1<br />"; } } class Observer2 implements Observer { function update($event_info = null) { // TODO: Implement update() method. echo "逻辑2<br />"; } } $event = new Event(); $event->addObserver(new Observer1()); $event->addObserver(new Observer2()); $event->trigger();
相关文章推荐
- PHP实现正态分布的累积概率函数
- Zend Framework实现多服务器共享SESSION数据的方法
- php 面向对象 初始化类
- windows上给yii2安装插件
- Zend Framework框架Smarty扩展实现方法
- Windows Server 2012 ftp的搭建
- Zend Framework框架路由机制代码分析
- 单例模式(PHP)
- NTP参考时钟
- PHP实现补齐关闭的HTML标签
- 使用PHP自带zlib函数 几行代码实现PHP文件打包下载zip
- Zend Framework实现留言本分页功能(附demo源码下载)
- PHP通用分页组件
- PHP并发IO编程之路
- PHP中的正则表达式及模式匹配
- PHP连接MySQL数据库
- php获取两经纬度之间的距离
- php的socket通信
- 如何开始使用Laravel
- Zend Framework实现具有基本功能的留言本(附demo源码下载)