• php 设计模式之观察者模式


    <?php
    
    //观察者: 负责信息的变化。
    interface IObserver{
     function onChanged($sender,$args);
    }
    
    //被观察者:加入到被观察者队列中,实现被观察
    interface IObservable{
     function addObserver($observer);
    }
    
    
    // 实现被观察,
    class UserList implements IObservable {
    
     //定义观察者集合
     private $_observers = array();
     
     //增加用户,调用观察者
     public function addCustomer($name){
     
       foreach ($this->_observers as $obs){
         
       $obs->onChanged($this,$name);
       $obs->sendMessage($this,$message);
      }
      //do something
     }
     
     // 执行观察者的方法
     public function sendMessage($message){
      
      foreach ($this->_observers as $obs)
      {
        $obs->sendMessage($this,$message);
      }
     }
     
     //在被观察者 引入观察者
     public function addObserver($observer){
      $this->_observers[] = $observer;
     }
    }
    
    
    //观察者:是要改变的信息
    class UserListLogger implements IObserver
    {
      public function onChanged( $sender, $args )
      {
       if($args ==='json'){
        echo 'JSON you are pig';
       }else{
         echo( "'$args' added to user list
    " );
       }
      }
      
      public function sendMessage($sender,$message){
       echo $message;
      }
      
    }
    
    class Userbing implements IObserver
    {
        public function onChanged($sender,$message)
        {
            if(!empty($message))
            {
                echo "我将加入....你的组织!";
            }
        }
        
        public function sendMessage($sender,$mesg)
        {
            echo $mesg;
        }
    }
    
    
    $ul = new UserList();
    $ul->addObserver( new UserListLogger() );
    $ul->addCustomer( "json" );
    $ul->sendMessage( "欢迎 JSON光临" );
    
    
    $ul->addObserver( new userbing());
    $ul->addCustomer("hubing");
    $ul->sendMessage("hello");
    
    ?>
  • 相关阅读:
    FreeSql 教程引导
    Day3-JS-JavaScript 函数专题
    Day2-JS-JSON
    Day2-JS-let和const
    Day2-JS-this 关键字
    Day2-JS-JavaScript 验证 API
    Day2-JS-表单
    Day2-JS-严格模式
    Day2-JS-JavaScript 错误
    Day2-JS-正则表达式
  • 原文地址:https://www.cnblogs.com/hubing/p/3301342.html
Copyright © 2020-2023  润新知