转 php 观察者模式
生活随笔
收集整理的這篇文章主要介紹了
转 php 观察者模式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
<?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/
轉載于:https://www.cnblogs.com/feiyuhit/archive/2013/06/14/3135729.html
總結
以上是生活随笔為你收集整理的转 php 观察者模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CYQ.DBImport 数据库反向工程
- 下一篇: 动态规划算法php,php算法学习之动态