91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP設計模式-觀察者

發布時間:2020-06-28 17:37:24 來源:網絡 閱讀:396 作者:侯施群 欄目:web開發

PHP設計模式-觀察者

   

   一個對象狀態發生改變后,會影響到其他幾個對象的改變,這時候可以用觀察者模式。一個對象通過添加一個attach方法允許觀察者注冊自己,使本身變得可觀察。當被觀察的對象更改時,它會將消息發送到已注冊的觀察者。觀察者使用該信息執行的操作與被觀察的對象無關。觀察者模式是一種事件系統,意味著這一模式允許某些類通過觀察被觀察類的狀態變化,做出相應的動作。

   

  觀察者模式UML圖

PHP設計模式-觀察者

  php5中提供了觀察者observer與被觀察者subject接口

   interface SplSubject  

    {  

    function attach(SplObserver $observer);  

    function detach(SplObserver $observer);  

    function notify();  

    }  

   interface SqlObserver  

    {  

    function update(SplSubject $subject);  

    }

  例子如下

<?php
  class user implements SplSubject{
  public     $lognum;
  public     $hobby;
  protected  $observers;
  
  public function __construct($hobby){
      $this->lognum= rand(1,10);
      $this->hobby= $hobby;
      $this->observers=new SplObjectStorage();
  }
  public function login(){
    $this->notify();
  }
  
  public function attach(SPLObserver $observer){
    $this->observers->attach($observer);
  }
  
  public function detach(SPLObserver $observer){
      $this->observers->detach($observer);
  }
  
  public function notify(){
      $this->observers->rewind();
      while($this->observers->valid){
         $observer= $this->observers->current();
         $observer->update($this);
         $this->observers->next();
      }      
  }    
  }
   
  class secrity implements SPLObserver{
      
      public function update(SplSubject $subject){
          if($subject->lognum>=3){
              
          }else{
              
          }          
      }
  }
    
  class ad implements SPLObserver{
  
      public function update(SplSubject $subject){
          if($subject->hobby=="sports"){
  
          }else{
  
          }  
      }
  }
  
  //實施觀察
  $user= new user("sports");
  $user->attach(new secrity());
  $user->attach(new ad());
  $user->login();
  
  ?>


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

庐江县| 金乡县| 罗定市| 个旧市| 丽水市| 襄城县| 县级市| 班玛县| 华宁县| 广宁县| 平定县| 鸡东县| 商都县| 志丹县| 太湖县| 育儿| 凤山县| 东辽县| 璧山县| 南陵县| 吴堡县| 永定县| 台中县| 乳山市| 景泰县| 克什克腾旗| 武功县| 扎鲁特旗| 南木林县| 河南省| 舞阳县| 湘阴县| 卫辉市| 松原市| 光山县| 池州市| 栾川县| 嫩江县| 侯马市| 于田县| 将乐县|