手机
当前位置:查字典教程网 >编程开发 >php教程 >PHP 观察者模式的实现代码
PHP 观察者模式的实现代码
摘要:代码如下所示:复制代码代码如下://被察者抽象类classObservedimplementsSplSubject{protected$_n...

代码如下所示:

复制代码 代码如下:

//被察者抽象类

class Observed implements SplSubject{

protected $_name;

protected $_observers;

//实例化,生成一个观察者对象

public function __construct(){

$this->_observers = new SplObjectStorage();

}

// 添加观察者对象

public function attach(SplObserver $observer){

$this->_observers->attach($observer);

}

//删除观者对象

public function detach(SplObserver $observer){

$this->_observers->detach($observer);

}

//通知消息

public function notify(){

foreach($this->_observers as $observer){

$observer->showMessage($this);

}

}

//普通方法: 设置值

public function setName($name){

$this->_name = $name;

$this->notify();

}

//普通方法: 获取值

public function getName(){

return $this->_name;

}

//普通方法:设置年龄

public function setAge($age){

$this->age = $age;

foreach($this->_observers as $observer){

$observer->showAge($this->_name,$this->age);

}

}

}

// 观察者抽象类

class Observer implements SplObserver{

//显示消息提示

public function showMessage(SplSubject $obj){

$user = $obj->getName();

if($user==='admin'){

echo '您好, ',$user,'欢迎您进入管理后台<br/>';

}else{

echo "你好, '$user' 你已经被添加到了用户列表<br/>";

}

}

//这是继承父类的抽象方法

public function update(SplSubject $subject) {}

//显示个人年龄

public function showAge($name,$age){

echo "<script>alert('$name 的年龄是: $age')</script>";

}

}

$subject = new Observed(); //生成一个被观察者对象

$observer = new Observer(); //生成一个观察者对象

$subject->attach($observer);//把观察者传入到被观察中去

$subject->setName('张三'); //调用 setName 方法

/*

* 通过面的 setName 就会调用 $this->notify();

* 通过调用 $this->notify()就会调用 $observer->showMessage($this)方法,

* 即每个观察者对象的 showMessage($obj)方法;

*/

$subject->setName('admin');

$subject->setAge(24);

【PHP 观察者模式的实现代码】相关文章:

MVC模式的PHP实现

百度工程师讲PHP函数的实现原理及性能分析(三)

PHP中的事务使用实例

PHP动态图像的创建

php curl请求信息和返回信息设置代码实例

PHP SPL标准库中的常用函数介绍

PHP的类 功能齐全的发送邮件类

PHP中的traits实现代码复用使用实例

PHP初学者头疼问题总结

PHP中预定义的6种接口介绍

精品推荐
分类导航