<?php/** *
观察者模式 *
@author: Mac *
@date: 2012/02/22 */class Paper{/*
主题 */ private $_observers =array(); public function register($sub){/*
注册观察者 */ $this->_observers[]
= $sub; } public function trigger(){ /*
外部统一访问 */ if(!empty($this->_observers)){ foreach($this->_observersas $observer){ $observer->update(); } } }}/** *
观察者要实现的接口 */interface Observerable{ public function update();}class Subscriberimplements Observerable{ public function update(){ echo "Callback\n"; }} |
下面是测试代码
/*
测试 */$paper =new Paper();$paper->register(new Subscriber());//$paper->register(new
Subscriber1());//$paper->register(new
Subscriber2());$paper->trigger(); 当新对象要填入的时候,只需要在主题(又叫可观察者)中进行注册(注册方式很多,你也可以在构造的时候,或者框架访问的接口中进行注册),然后实现代码直接在新对象的接口中进行。这降低了主题对象和观察者对象的耦合度。参考:Head
First 设计模式 |
2567

被折叠的 条评论
为什么被折叠?



