为了账号安全,请及时绑定邮箱和手机立即绑定

【九月打卡】第8天--大话PHP设计模式第九章节观察者模式

标签:
PHP

课程名称:大话PHP设计模式

课程章节: 9-1观察者模式
课程链接

主讲老师:Rango

课程内容

老师给出了观察者模式的定义,然后通过代码演示让我们更加深入了解到观察者模式的实现原理。

课程收获

定义

观察者模式(Observer),当一个对象的状态发生改变时,依赖他的对象会全部收到通知,并自动更新。

理解

一个事件发生后,要执行一连串更新操作。传统的编程方式,就是在事件的代码之后直接加入处理逻辑。当更新得逻辑增多之后,代码会变得难以维护。这种方式是耦合的,侵入式的,增加新的逻辑需要改变事件主题的代码。

应用

观察者模式通常用在实时事件处理系统、组件间解耦、数据库驱动的消息队列系统,同时也是MVC设计模式中的重要组成部分

场景举例

比如用户注册后需要增加一个邮件推送的功能,过几天加送优惠券的功能,这时将代码都写在登录里就非常的耦合的,或者比如要根据用户不同的角色给出不同的处理方式(势利眼的观察者看人下菜),这些都可以使用观察者模式

优势

观察者模式实现了低耦合,非侵入式的通知与更新机制

代码实现


interface Observer
{
    function update();
}

abstract class EventGenerator
{
    private $observers = [];
    function addObserver(Observer $observer)
    {
        $this->observers[] = $observer;
    }
    function notify()
    {
        foreach ($this->observers as $observer ) {
            $observer->update();
        }
    }
} 

class Event extends EventGenerator
{
    function trigger()
    {
        echo "Event<br>\n";
        $this->notify();
    }
}

class Observer1 implements Observer
{
    function update($ebent_info = null)
    {
        echo "逻辑1<br />\n";
    }
}

class Observer2 implements Observer
{
    function update($ebent_info = null)
    {
        echo "逻辑2<br />\n";
    }
}


$event = new Event;
$event->addObserver(new Observer1);
$event->addObserver(new Observer2);
$event->trigger();

课程截图

图片描述
图片描述

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消