zoukankan      html  css  js  c++  java
  • 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

    疯子在左,天才在右
  • 相关阅读:
    团队冲刺(六)
    团队冲刺(五)
    团队冲刺(四)
    机器学习十讲第二讲
    机器学习十讲第一讲
    逻辑斯蒂回归实现手写字的识别
    利用js实现搜索关键字变红色
    《软件架构的艺术》阅读笔记02
    TensorFlow文本分类
    TensorFlow图像分类
  • 原文地址:https://www.cnblogs.com/zilixiang/p/9291353.html
Copyright © 2011-2022 走看看