码迷,mamicode.com
首页 > 其他好文 > 详细

观察者模式

时间:2016-05-27 14:27:24      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:

观察者模式
1.观察者模式,当一个对象状态发生改变时,依赖它的对象全部会收到通知,并自动更新
2.场景:一个事件发生后,要执行一连串更新操作,在传统的编程方式,就是在事件的代码之后直接加入处理逻辑。当更新的
逻辑增多之后,代码变得难以维护,这种方式是耦合的,侵入式的,增加新的逻辑需要修改事件主体的代码
3.观察者模式就可以实现,低耦合,非侵入式的通知与更新机制
class Event extends \Jkz\EventGenerator//创建事件
{
function triger()
{
echo "Event!<br/>\n";
//update 传统的直接在事件之后添加代码,直到变得越来越多难以维护
// echo "逻辑1<br/>\n"; //逻辑1 逻辑2等都是独立的模块,不能在这里侵入式的修改逻辑主题
// echo "逻辑2!<br/>\n";
// echo "逻辑3!<br/>\n";
// echo "逻辑4!<br/>\n";

//观察者模式下的事件发生之后只需要调用 事件发生者基类的notify通知所有观察者更新
$this->notify();

}
}

//增加一个观察者,必须实现观察者的接口
class Observer1 implements \Jkz\IObserver
{
function update($event_info = null)
{
echo "逻辑1<br/>\n"; //逻辑1 逻辑2等都是独立的模块,不能在这里侵入式的修改逻辑主题
}
}
class Observer2 implements \Jkz\IObserver
{
function update($event_info = null)
{
echo "逻辑2<br/>\n"; //逻辑1 逻辑2等都是独立的模块,不能在这里侵入式的修改逻辑主题
}
}

//将这个观察者加入到监听列表中

$event = new Event();
$event->addObserver(new Observer1());
$event->addObserver(new Observer2());
//事件发生之后自动通知每一个观察者
$event->triger();

实例
  使用观察者模式完成数据库增加数据后的一系列更新操作
技术分享

Model基类
  
技术分享

UserModel
技术分享

观察者配置
技术分享

观察者
技术分享
技术分享
技术分享
技术分享

观察者模式

标签:

原文地址:http://www.cnblogs.com/jk0011/p/5534319.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!