观察者模式代码php,PHP观察者模式的实现代码_PHP教程

代码如下所示:

代码如下:

//被察者抽象类

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,'欢迎您进入管理后台

';

}else{

echo "你好, '$user' 你已经被添加到了用户列表

";

}

}

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

public function update(SplSubject $subject) {}

//显示个人年龄

public function showAge($name,$age){

echo "";

}

}

$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);

http://www.bkjia.com/PHPjc/326995.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/326995.htmlTechArticle代码如下所示: 代码如下://被察者抽象类 class Observed implements SplSubject{ protected $_name; protected $_observers; //实例化,生成一个观察者...

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉 本文系统来源:php中文网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值