转载请注明作者和出处:https://www.jianshu.com/p/58b0e4811383
运行平台: Windows
php版本: php7.0
作者简介: 一个本该成为游戏职业选手却被编程耽误的程序员
当一个对象发生状态改变的时候,依赖他的对象会全部收到通知,并自动更新,这就是观察者模式(observer),例如,班主任来了,需要通知小王,小李,小红三个人。
<?php
// 主题接口
interface Subject{
public function register(PersonObserver $observer);
public function notify();
}
// 观察者接口
interface PersonObserver{
public function name();
}
// 主题
class Action implements Subject{
public $_observers=array();
public function register(PersonObserver $observer){
$this->_observers[]=$observer;
}
public function notify(){
foreach ($this->_observers as $observer) {
echo '老师来了,收起小动作'.$observer->name();
}
}
}
// 观察者
class XiaoMing implements PersonObserver{
public function name(){
return "小明".PHP_EOL;
}
}
class Xiaohong implements PersonObserver{
public function name(){
return "小红".PHP_EOL;
}
}
class XiaoWang implements PersonObserver{
public function name(){
return "小王".PHP_EOL;
}
}
// 应用实例
$action=new Action();
$action->register(new XiaoMing());
$action->register(new Xiaohong());
$action->register(new XiaoWang());
$action->notify();
运行结果:
老师来了,收起小动作小明
老师来了,收起小动作小红
老师来了,收起小动作小王
网友评论