// 观察者模式 主要分为被观察者,观察者
// 当一个对象(被观察者)状态发生变化时,依赖它的对象(观察者)全部会收到通知,并自动更新
// 观察者模式实现了低耦合,非侵入式的通知与更新机制
// 主题接口
interface Subject{
public function register(Observer $observer);
public function notify();
}
// 观察者接口
interface Observer{
public function watch();
}
// 主题
class Action implements Subject{
public $_observers = array();
// 把观察者都放在一个数组里
public function register(Observer $observer){
$this->_observers[] = $observer;
}
// 通知观察者变动
public function notify(){
foreach($this->_observers as $observer){
$observer->watch();
}
}
}
// 观察者
class Cat implements Observer{
public function watch(){
echo "cat";
}
}
class Dog implements Observer{
public function watch(){
echo "dog";
}
}
class People implements Observer{
public function watch(){
echo "people";
}
}
// 应用实例
$action = new Action();
$action->register(new Cat());
$action->register(new Dog());
$action->register(new People());
$action->notify();
// 输出 cat dog people
php设计模式-观察者模式
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...