<?php //观察者模式涉及到两个类 //男人类 和女朋友类 //男人类对象小明, 女朋友类对象小花、小丽 class Man { //用了存放观察者 protected $observers=[]; /** * 添加观察者方法 * * @param [type] $observers * @return void */ function addObserver($observers) { $this->observers[]=$observers; } /** * 花钱方法 * * @return void */ function buy() { //当被观察者做出这个行为的时候,让观察者得到通知,并且做出一定的反应 foreach($this->observers as $girl){ $girl->dongjie(); } } /** * 删除观察者方法 * * @param [type] $observer * @return void */ function delObserver($observer) { $key=array_search($observer,$this->observers); array_splice($this->observers,$key,1); } } class GirlFriend { function dongjie() { echo '你的男朋友正在花钱,马上冻结他的银行卡!<br/>'; } } //创建对象 $xiaoming=new Man(); $xiaohua=new GirlFriend(); $xiaoli=new GirlFriend(); //添加观察者 $xiaoming->addObserver($xiaohua); $xiaoming->addObserver($xiaoli); $xiaoming->delObserver($xiaoli); $xiaoming->buy();