首页 > 编程 > PHP > 正文

PHP 观察者模式的实现代码

2020-03-22 19:58:47
字体:
来源:转载
供稿:网友
代码如下所示:
复制代码 代码如下:
//被察者抽象类
html' target='_blank'>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教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表