php 设计模式之观察者模式
2023-09-27 14:20:06 时间
<?php //观察者: 负责信息的变化。 interface IObserver{ function onChanged($sender,$args); } //被观察者:加入到被观察者队列中,实现被观察 interface IObservable{ function addObserver($observer); } // 实现被观察, class UserList implements IObservable { //定义观察者集合 private $_observers = array(); //增加用户,调用观察者 public function addCustomer($name){ foreach ($this->_observers as $obs){ $obs->onChanged($this,$name); $obs->sendMessage($this,$message); } //do something } // 执行观察者的方法 public function sendMessage($message){ foreach ($this->_observers as $obs) { $obs->sendMessage($this,$message); } } //在被观察者 引入观察者 public function addObserver($observer){ $this->_observers[] = $observer; } } //观察者:是要改变的信息 class UserListLogger implements IObserver { public function onChanged( $sender, $args ) { if($args ==='json'){ echo 'JSON you are pig'; }else{ echo( "'$args' added to user list\n" ); } } public function sendMessage($sender,$message){ echo $message; } } class Userbing implements IObserver { public function onChanged($sender,$message) { if(!empty($message)) { echo "我将加入....你的组织!"; } } public function sendMessage($sender,$mesg) { echo $mesg; } } $ul = new UserList(); $ul->addObserver( new UserListLogger() ); $ul->addCustomer( "json" ); $ul->sendMessage( "欢迎 JSON光临" ); $ul->addObserver( new userbing()); $ul->addCustomer("hubing"); $ul->sendMessage("hello"); ?>
相关文章
- Laravel 5.1使用命令行模式(artisan)运行php脚本
- php addslashes() 函数
- PHP 错误与异常 笔记与总结(15 )使用观察者模式处理异常信息
- PHP 设计模式 笔记与总结(11)观察者模式
- PHP+jQuery 注册模块的改进之一:验证码存入SESSION
- 《PHP和MySQL Web开发从新手到高手(第5版)》一2章 MySQL简介2.1 数据库简介
- 转 PHP in_array() 函数
- PHP正则表达式教程
- PHP数据库长连接mysql_pconnect的细节
- php设计模式-观察者模式
- PHP GD 生成图片验证码+session获取储存验证码
- php桥接模式
- php适配器模式
- php责任链模式
- php观察者模式