zoukankan      html  css  js  c++  java
  • 观察者模式

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

    定义一个观察者接口:

    <?php 
    
    /**
     * 定义一个观察者接口
     */
    interface Observer{
        //这里就是在事件发生后要执行的逻辑
        function update();
    }
    ?>

    定义一个事件触发抽象类:

    <?php 
    
    /**
     * 定义一个事件触发抽象类
     */
    require_once('observer.php');
    abstract class EventGenerator{
        private $observers = array();
        function addObserver(observer $observer){
            $this->observers[] = $observer;
        }
        function notify(){
            foreach($this->observers as $observer){
                $observer->update();
            }
        }
    } 
    ?>

    执行代码:

    <?php 
    
    
    /**
     * 执行代码
     */
    require_once('EventGenerator.php');
    class Event extends EventGenerator{
        function triger(){
            echo 'Event<br>';
        }
    }
    
    class Observer1 implements Observer{
        function update(){
            echo '逻辑1';
        }
    }
    
    class Observer2 implements Observer{
        function update(){
            echo '逻辑2<br>';
        }
    }
    
    $event = new Event();
    $event->addObserver(new Observer1());
    $event->addObserver(new Observer2());
    $event->triger();
    $event->notify();
    
    ?>

  • 相关阅读:
    Cassandra内部架构
    Cassandra数据模型
    windows10 docker安装使用
    vue用async、await实现同步请求
    navicat mysql 书写存储过程并导出成sql
    idea svn 文件还原到指定版本
    vscode vue 去掉语法提示
    elasticsearch regexp查询特殊字符处理
    redis中获取不同自增数的方法
    java Elasticsearch 进行嵌套子聚合
  • 原文地址:https://www.cnblogs.com/two-bees/p/10602651.html
Copyright © 2011-2022 走看看