<?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");
?>