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

    //观察者模式
    
    /**
     *
     * 大概意思就是,当一个事件的状态发生改变之后,通知其他依赖的事务。
     *
     * 一般的做法是代码下面直接撸代码, 这样的不好的地方就是,没增加一个依赖都需要对下面增加,接着更改。
     * 逻辑多了,就会很长很长。当然大部分会每个依赖业务封装到一个方法中。如果模块太大可能就拆分做队列了。
     * 其他依赖直接消费队列就可以了。
     * 现在有一种模式可以解决这种方法。
     * 大概就是下面代码的样子。
     * Class upload
     */
    
    class upload{
        public $_obervers = [];
        /**
         * 增加订阅对象
         * @param $object
         */
        public function register($object){
            $this->_obervers[] = $object;
        }
    
        /**
         * 触发器
         */
        public function trigger(){
            if(empty($this->_obervers)){
                return;
            }
            foreach($this->_obervers as $obj){
                $obj->execute();
            }
        }
    
        /**
         * 具体操作事务
         */
        public function htm5toxml(){
            echo 'upload is end';
            echo "
    ";
            $this->trigger();
        }
    }
    
    class a{
        public function execute(){
            echo 'this is a execute';
            echo "
    ";
        }
    }
    
    class b{
        public function execute(){
            echo 'this is b execute';
            echo "
    ";
        }
    }
    
    $upload = new upload();
    
    $upload->register(new a());
    $upload->register(new b());
    
    $upload->htm5toxml();
  • 相关阅读:
    02-MySQL的安装和管理
    01-pymysql模块的安装
    异常处理
    USACO 2015 Feb Censoring
    玄武密码(bzoj4327)(JSOI2012)
    浅谈AC自动机
    Equation
    JOI五子棋
    浅谈Tarjan
    年轮蛋糕JOI2014Final
  • 原文地址:https://www.cnblogs.com/etata/p/8820327.html
Copyright © 2011-2022 走看看