观察者模式

来源:互联网 发布:电脑能看淘宝直播吗 编辑:程序博客网 时间:2024/05/16 19:21
#观察者模式#理解:#@0.解耦两个有一定关联的对象,可以随意的添加和删除额外的对象,增强程序的扩展和灵活性#@1.一个对象可以被多个观察者观察#@2.当对象发生改变时,会主动通知所有观察者,进行相应的操作#@3.对象能够管理所有的观察者(增加观察者,删除观察者)#使用场景:一个或多个事物会随着另外一个事物的变化而变化的情况,如:网络收到数据需要其它方法处理,界面发生变化,其它区域也要变化#观察者class observers{public function notify($arr){echo "观察的事物说: ".$arr;}}#被观察的事物class obj{#存储观察者protected $ar=array();#添加观察者public function attach($key,$observer){$this->ar[$key]=$observer;}#移除观察者public function detach($key){unset($this->ar[key]);}#通知观察者public function notifyObserver($arr){foreach($this->ar as $k=>$v){$v->notify($arr);}}#事物的具体动作public function action(){$arr=("我有话要说,请注意听");$this->notifyObserver($arr);}}//////////////////////////////////////////////#任意的添加和删除观察者$obs=new observers();$ob = new obj();$ob->attach(0,$obs);$ob->action();

0 0