• php---观察者模式


    首先摘用印象深刻的一段:

    观察者模式:从面向过程的角度来看,首先是观察者向主题注册,注册完之后,主题再通知观察者做出相应的操作,整个事情就完了。从面向对象的角度来看,主题提供注册和通知的接口,观察者提供自身操作的接口。(这些观察者拥有一个同一个接口。)观察者利用主题的接口向主题注册,而主题利用观察者接口通知观察者。耦合度相当之低。

    下面是一个操作订单时,需要发送邮件信息 例子很好理解 

    /订单接口
    interface order{
    function addObserver();
    function notify();
    }

    interface Observer{
    function sendEmail();
    }

    //操作订单
    class actionOrder implements order{
    private $_observer = [];
    function addObserver(Observer $observer){
    $this->_observer[] = $observer;
    }
    function notify(){
    foreach ($this->_observer as $observer) {
    $observer->sendEmail();
    }
    }
    }

    //下单发送邮件
    class upOrderObserver implements Observer{
    public function sendEmail(){
    echo '下单成功,订单号---1';
    }
    }

    //退单发送邮件
    class downOrderObserver implements Observer{
    public function sendEmail(){
    echo '退单成功,订单号---1';
    }
    }

    $o = new actionOrder();
    $o->addObserver(new upOrderObserver());
    $o->addObserver(new downOrderObserver());
    $o->notify();

    //流程详解 先找到主体 然后根据主体的意图注册观察主体的个体。操作订单是整个主线(主体) 下单OR退单都需要发送邮件或者短信提醒用户或者
    //告知系统或者其他操作 发送短信或者邮件就是个人 把个体注册到主体中 然后主体的方法封装个人的方法

    个人认为 这个解释的不错 https://www.cnblogs.com/DeanChopper/p/4830134.html

    疯子在左,天才在右
  • 相关阅读:
    [atARC100F]Colorful Sequences
    [atARC103D]Robot Arms
    [atARC107F]Sum of Abs
    [atAGC047F]Rooks
    [loj3278]收获
    [cf809E]Surprise me
    [cf997E]Good Subsegments
    [cf603E]Pastoral Oddities
    Codeforces Round #453
    Educational Codeforces Round 32
  • 原文地址:https://www.cnblogs.com/zilixiang/p/9291353.html
Copyright © 2020-2023  润新知