php当中的观察者模式,在laravel框架中有用到

来源:互联网 发布:js基础数据类型 编辑:程序博客网 时间:2024/06/10 10:01
<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>?>

0 0
原创粉丝点击