您的当前位置:首页>全部文章>文章详情

php设计模式之观察者模式(Observer)

发表于:2019-08-16 10:33:48浏览:55次TAG:
某个对象可以被设置为是可观察的,只要通过某种方式允许其他对象注册为观察者。每当被观察的对象改变时,会发送信息给观察者。 ```php _observers as $key => $obs) { $obs->onSendMsg( $this, $name ); } } // 添加观察者 public function addObserver( $observer ) { $this->_observers[] = $observer; } // 删除观察者 public function removeObserver( $observer_name ) { foreach ($this->_observers as $key => $observer) { if($observer_name == $observer->getName()) { unset($this->_observers[$key]); return true; } } return false; } } // 观察者 class UserListLogger implements IObserver { public function onSendMsg( $sender, $args ) { var_dump("{$args} send to UserListLogger"); } public function getName() { return 'UserListLogger'; } } // 观察者 class OtherObserver implements IObserver { public function onSendMsg( $sender, $args ) { var_dump("{$args} send to OtherObserver"); } public function getName() { return 'OtherObserver'; } } // client // 实例 被观察者 对象 $ul = new UserList(); // 增加观察者 $ul->addObserver( new UserListLogger() ); $ul->addObserver( new OtherObserver() ); // 发送消息给观察者 $ul->sendMsg( "Hello World!" ); var_dump("-----------分界线-----------"); // 移除观察者 $ul->removeObserver('UserListLogger'); // 发消息给观察者 $ul->sendMsg( "Hello World Again!"); ?> ``` 输出 ``` vagrant@vagrant-ubuntu:~$ sudo php observer.php string(35) "Hello World! send to UserListLogger" string(34) "Hello World! send to OtherObserver" string(31) "-----------分界线-----------" string(40) "Hello World Again! send to OtherObserver" ```
栏目分类全部>
腾讯云采购季云服务器一折促销