首页 > 其他 > 详细

设计模式(六)观察者模式

时间:2019-05-26 23:05:51      阅读:147      评论:0      收藏:0      [点我收藏+]

观察者模式

1:观察者模式(Observer),当一个对象状态发生变化时,依赖它的对象全部会收到通知,并自动更新。 
2:场景:一个事件发生后,要执行一连串更新操作。传统的编程方式,就是在事件的代码之后直接加入处理的逻辑。当更新的逻辑增多之后,代码会变得难以维护。这种方式是耦合的,侵入式的,增加新的逻辑需要修改事件的主体代码。 
3:观察者模式实现了低耦合,非侵入式的通知与更新机制。 
定义一个事件触发抽象类。

定义抽象类添加观察者:

EventGenerator.php
<?php
require_once Loader.php;
abstract class EventGenerator{
    private $observers = array();
function addObserver(Observer $observer){ $
this->observers[]=$observer; } function notify()
{
foreach ($this->observers as $observer){ $observer->update(); } } }

定义一个观察者接口interface接口:

Observer.php
<?php
require_once Loader.php;
interface Observer{
    function update();//这里就是在事件发生后要执行的逻辑
}
//一个实现了EventGenerator抽象类的类,用于具体定义某个发生的事件

实现

require Loader.php;
class Event extends EventGenerator{
    function triger(){
        echo "Event<br>";
    }
}
class Observer1 implements Observer{
    function update(){
        echo "逻辑1<br>";
    }
}
class Observer2 implements Observer{
    function update(){
        echo "逻辑2<br>";
    }
}
$event = new Event();
$event->addObserver(new Observer1());
$event->addObserver(new Observer2());
$event->triger();
$event->notify();

 

设计模式(六)观察者模式

原文:https://www.cnblogs.com/wanglijun/p/10928037.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!