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

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…


论本赛季,如何被对队友带飞, 赛季开始第一周,惊艳队友纷纷出水
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

银色种子

打赏 >100 请留言,并私信

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值