小言_互联网的博客

php设计模式【单例模式】- 伪代码 2021-04-22

360人阅读  评论(0)

php设计模式 观察者

  • 非常重要的设计模式
  • 典型的解耦方法
  • 实现依赖反转,你细细品

  1. 被观察者必是事件触发者,要将 [观察者 ] 加入事件触发通知列表
  2. 观察者必须有一个 [ 当事件触发者通知观察者的接受操作 ] 调用方法
  3. 被观察者要有一个当事件触发之后调用观察者的 [ 当事件触发者通知观察者的接受操作 ] 的方法
  4. 总结:本来主动调用, 现在我不直接调用你,也不去找你,把你放在观察者的列表里,我有变化通知你。
    🙂, 店里正在上货,你别在店门口蹲我,你告诉我你需要,我上货好了叫你 , Biu~
声明一个基类, 表示一个事件产生者
使用抽象类

abstruct class EventGenerator{
   
  
    private $Observers = [];  // 事件发生者不知道哪些人观察着这个事件

    // 为事件增加观察者
    function addObserver(Observer $observer){
   
        $this->Obeservers = $observer;
    }

    // 骨折通知所有观察者进行更新 update
    function notify(){
   

      foreach( $Observers as $obs){
   
        $obs->update();
      }

    }
}


声明一个接口 Observer 这个是观察者, 也就是事件产生者被触发后通知谁
interface Observer {
   
  // 表示, 事件发生了, 观察者本人要进行更新的操作, 
  // $event_info 用来 保存通知观察者的这个event的信息 $event_info
  function update($event_info = null){
   

  }

}


// 事件发生这
class Event extends EventGenerator{
   
  
  trigger(){
   

    echo "event trigger";
    $this->notify();
  }
  

}

class Method1 extends Observer {
   
  
  public function update($info = null){
   
     echo 'Method1';
  }

}
class Method2 extends Observer {
   
  
  public function update($info = null){
   
     echo 'Method2';
  }

}

class Method3 extends Observer {
   
  
  public function update($info = null){
   
     echo 'Method3';
  }

}


$evt = new  EventGenerator// 将观察者加入到监听列表中
$info =  $evt->result;
$evt->addObserver( new Method1($info) );
$evt->addObserver( new Method2 );
$evt->addObserver( new Method3 );
$evt->trigger();

设计模式不是只有php用到,你去看vuejs源码… 你细品。你看看它怎么双向绑定的。
版本vue2 , vue3 源码我还没来得及看…


总结:

嘴上笑嘻嘻, 心里 XXX. XXX = So Easy Hahahaha…


论本赛季,如何被对队友带飞, 赛季开始第一周,惊艳队友纷纷出水


转载:https://blog.csdn.net/silvercell/article/details/116014619
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场