转 php 观察者模式
2013-06-14 15:54
190 查看
<?php /** * 观察者模式 */ /** * 抽象主题角色 */ interface Subject { /** * 增加一个新的观察者对象 * @param Observer $observer */ public function attach(Observer $observer); /** * 删除一个已注册过的观察者对象 * @param Observer $observer */ public function detach(Observer $observer); /** * 通知所有注册过的观察者对象 */ public function notifyObservers(); } /** * 具体主题角色 */ class ConcreteSubject implements Subject { private $_observers; public function __construct() { $this->_observers = array(); } /** * 增加一个新的观察者对象 * @param Observer $observer */ public function attach(Observer $observer) { return array_push($this->_observers, $observer); } /** * 删除一个已注册过的观察者对象 * @param Observer $observer */ public function detach(Observer $observer) { $index = array_search($observer, $this->_observers); if ($index === FALSE || ! array_key_exists($index, $this->_observers)) { return FALSE; } unset($this->_observers[$index]); return TRUE; } /** * 通知所有注册过的观察者对象 */ public function notifyObservers() { if (!is_array($this->_observers)) { return FALSE; } foreach ($this->_observers as $observer) { $observer->update(); } return TRUE; } } /** * 抽象观察者角色 */ interface Observer { /** * 更新方法 */ public function update(); } class ConcreteObserver implements Observer { /** * 观察者的名称 * @var <type> */ private $_name; public function __construct($name) { $this->_name = $name; } /** * 更新方法 */ public function update() { echo "Observer ". $this->_name. " has notified.\n"; } } $subject = new ConcreteSubject(); /* 添加第一个观察者 */ $observer1 = new ConcreteObserver('Martin'); $subject->attach($observer1); echo "\n The First notify:\n"; $subject->notifyObservers(); /* 添加第二个观察者 */ $observer2 = new ConcreteObserver('phppan'); $subject->attach($observer2); echo "\n The Second notify:\n"; $subject->notifyObservers(); /* 删除第一个观察者 */ $subject->detach($observer1); echo "\n The Third notify:\n"; $subject->notifyObservers(); ?>
转至:http://wend1054.blog.163.com/
相关文章推荐
- PHP观察者模式
- php 观察者模式
- PHP 观察者模式 的真正实现
- PHP设计模式实例之(观察者模式、策略模式、简单工厂模式)
- php观察者模式。
- 使用php标准库spl在实现观察者模式
- PHP设计模式——观察者模式
- PHP设计模式之JS实现观察者模式
- PHP观察者模式原理与简单实现方法示例
- PHP设计模式 观察者模式(Observer)
- php设计模式学习之观察者模式
- php模式设计之 观察者模式
- php设计模式之观察者模式
- PHP常见的设计模式之:观察者模式
- PHP观察者模式示例【Laravel框架中有用到】
- php设计模式(3)-观察者模式
- php 燕十八 观察者模式代码例子
- php设计模式之———观察者模式
- PHP 观察者模式
- PHP 错误与异常 笔记与总结(15 )使用观察者模式处理异常信息