php观察者模式

时间:2023-03-09 04:07:14
php观察者模式

观察者模式(有时又被称为发布/订阅模式)是软件设计模式的一种。在此种模式中,一个目标对象管理所有相依于它的观察者对象,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实作事件处理系统。(*)

简写一个php观察者模式的例子:

 <?php
/**
* auth phpzhou
* date 2015-4-17
*/
interface Subject{
public function register(Observer $o);
public function remove(Observer $o);
public function notify();
} interface Observer{
public function update();
} //具体主题
class Paper implements Subject{
private $_class = array();
public function register(Observer $o){
$this->_class[] = $o;
}
public function remove(Observer $o){
if(!empty($this->_class)){
foreach($this->_class as $key=>$observer){
if($observer == $o){
//unset($this->_class[$key]);
array_splice($this->_class,$key,1);
}
} }
}
public function notify(){
if(!empty($this->_class)){
foreach($this->_class as $observer){
$observer->update();
}
}
}
} //一个观察者
class CurrentObserver implements Observer{ public function update(){
echo "currentObserver good!",PHP_EOL;
}
} //一个观察者
class NextObserver implements Observer{
public function update(){
echo "nextObserver good!",PHP_EOL;
}
} //测试
$paper = new Paper();
$paper->register(new CurrentObserver());
$paper->register(new NextObserver());
$paper->notify();
$paper->remove(new NextObserver());
echo "<br>";
$paper->notify();