亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

PHP觀察者模式原理與簡單實(shí)現(xiàn)方法示例

 更新時間:2017年08月25日 16:00:44   作者:LoveJulin  
這篇文章主要介紹了PHP觀察者模式原理與簡單實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了php觀察者模式的概念、原理、實(shí)現(xiàn)方法及相關(guān)注意事項,需要的朋友可以參考下

本文實(shí)例講述了PHP觀察者模式原理與簡單實(shí)現(xiàn)方法。分享給大家供大家參考,具體如下:

當(dāng)一個對象狀態(tài)發(fā)生改變后,會影響到其他幾個對象的改變,這時候可以用觀察者模式。像wordpress這樣的應(yīng)用程序中,它容外部開發(fā)組開發(fā)插件,比如用戶授權(quán)的博客統(tǒng)計插件、積分插件,這時候可以應(yīng)用觀察者模式,先注冊這些插件,當(dāng)用戶發(fā)布一篇博文后,就回自動通知相應(yīng)的插件更新。

觀察者模式符合接口隔離原則,實(shí)現(xiàn)了對象之間的松散耦合。

觀察者模式UML圖:

在php SPL中已經(jīng)提供SplSubject和SqlOberver接口

interface SplSubject
{
  function attach(SplObserver $observer);
  function detach(SplObserver $observer);
  function notify();
}
interface SqlObserver
{
  function update(SplSubject $subject);
}

下面具體實(shí)現(xiàn)上面例子

class Subject implements SplSubject
{
  private $observers;
  public function attach(SplObserver $observer)
  {
    if (!in_array($observer, $this->observers)) {
      $this->observers[] = $observer;
    }
  }
  public function detach(SplObserver $observer)
  {
    if (false != ($index = array_search($observer, $this->observers))) {
      unset($this->observers[$index]);
    }
  }
  public function post()
  {
    //post相關(guān)code
    $this->notify();
  }
  private function notify()
  {
    foreach ($this->observers as $observer) {
      $observer->update($this);
    }
  }
  public function setCount($count)
  {
    echo "數(shù)據(jù)量加" . $count;
  }
  public function setIntegral($integral)
  {
     echo "積分量加" . $integral;
  }
}
class Observer1 implements SplObserver
{
  public function update($subject)
  {
    $subject-> setCount(1);
  }
}
class Observer2 implements SplObserver
{
  public function update($subject)
  {
    $subject-> setIntegral(10);
  }
}
class Client
{
  public function test()
  {
    $subject = new Subject();
    $subject->attach(new Observer1());
    $subject->attach(new Observer2());
    $subject->post();//輸出:數(shù)據(jù)量加1 積分量加10
  }
}

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php面向?qū)ο蟪绦蛟O(shè)計入門教程》、《PHP基本語法入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總

希望本文所述對大家PHP程序設(shè)計有所幫助。

相關(guān)文章

最新評論