php当中的观察者模式,在laravel框架中有用到
2015-01-21 23:32
337 查看
<span style="font-size:14px;"><?php //观察者模式 //抽象主题类 interface Subject { public function attach(Observer $Observer); public function detach(Observer $observer); //通知所有注册过的观察者对象 public function notifyObservers(); } //具体主题角色 class ConcreteSubject implements Subject { private $_observers; public function __construct() { $this->_observers = array(); } //增加一个观察者对象 public function attach(Observer $observer) { return array_push($this->_observers,$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 { private $_name; public function __construct($name) { $this->_name = $name; } //更新方法 public function update() { echo 'Observer'.$this->_name.' has notify'; } } $Subject = new ConcreteSubject(); //添加第一个观察者 $observer1 = new ConcreteObserver('baixiaoshi'); $Subject->attach($observer1); echo 'the first notify:'; $Subject->notifyObservers(); //添加第二个观察者 $observer2 = new ConcreteObserver('hurong'); echo '<br/>second notify:'; $Subject->attach($observer2); /*echo $Subject->notifyObservers(); echo '<br/>'; $Subject->notifyObservers();*/</span> ?>
相关文章推荐
- PHP观察者模式示例【Laravel框架中有用到】
- PHP设计模式之观察者模式实现DEMO
- [设计模式]head first 设计模式之PHP实现 第二章 观察者模式
- php设计模式 Observer(观察者模式)
- php初学者的问题-编码-设计模式-面向对象-算法-框架
- PHP设计模式之观察者模式
- GEF框架中的设计模型(观察者模式)
- PHP 观察者模式 PHP SplSubject SplObserver 接口实现
- php初学者的问题-编码-设计模式-面向对象-算法-框架
- 1616前端App框架设计思路的变迁——观察者模式由拉转向推
- PHP 设计模式之观察者模式介绍
- php 观察者设计模式
- PHP 的观察者模式(Observer Pattern)
- php面向对象编程 – 观察者模式
- [php]php设计模式 Observer(观察者模式)
- PHP高级程序设计:模式、框架与测试
- php中的观察者模式
- 【小结】SPL 自动加载(from《PHP高级程序设计 模式、框架与测试》)
- php设计模式 Observer(观察者模式)
- PHP 设计模式之观察者模式