zoukankan      html  css  js  c++  java
  • 大话设计模式之PHP篇

    定义
    观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态发生改变时,会通知所有观察者对象,使他们能够自动更新自己。

    <?php
    /*主题类或称为通知类*/
    class Subject {
        private $_observers = array();
        
        /*注册观察者*/
        public function register($obs) {
            $this->_observers[] = $obs;
        }
        
        /*触发器,更新通知*/
        public function trigger() {
            if(!empty($this->_observers)) {
                foreach($this->_observers as $observer){
                    $observer->update();
                }
            }
        }
    }
    
    /*定义观察者接口,update必须实现*/
    interface Observer {
        public function update();
    }
    
    class One_Observer implements Observer {
        public function update() {
            echo 'One Is Called';
        }
    }
    
    class Two_Observer implements Observer {
        public function update() {
            echo 'Two Is Called';
        }
    }
    
    /*客户端实现*/
    $sub = new Subject;
    $sub->register(new One_Observer);
    $sub->trigger();
    $sub->register(new Two_Observer);
    $sub->trigger();

    观察者模式的关键对象是主题类Subject和观察者类Observer,一个Subject可以有任意数目的依赖他的观察者Observer,一旦Subject的状态发生了变化,所有的Observer都可以得到通知。Subject发出通知时并不需要知道谁是他的观察者,而任何一个观察者也不需要知道其他观察者的存在。
    ......真是又晦又涩...难懂的解释
    待想出个WEB开发中比较常见的应用就能理解了

  • 相关阅读:
    吃一堑长一智
    人做事 天看着
    【转贴】英语中12个月名称的由来
    4199,流氓中的流氓
    【转贴】看D片容易误解的10个词组
    【转载】中国小吃(英文表达)
    拼死拼活为了啥!
    GCII 1.4对1.31改进
    上古III的汉化和美化修正
    linux下tar的用法
  • 原文地址:https://www.cnblogs.com/fancing/p/6394200.html
Copyright © 2011-2022 走看看