天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

php設(shè)計(jì)模式之觀察者模式的應(yīng)用詳解

觀察者模式:定義對(duì)象間一種一對(duì)多的依賴關(guān)系,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),所有依賴于它的對(duì)象都得到通知并自動(dòng)更新。
觀察者類:
1.抽象主題角色:主題角色將所有對(duì)觀察者對(duì)象的引用保存在一個(gè)集合中,每個(gè)主題可以任意多個(gè)觀察者。抽象主題提供了增加和刪除觀察者對(duì)象的接口。
2.抽象觀察者角色:為所有的具體觀察者定義一個(gè)接口,在觀察的主題發(fā)生改變時(shí)更新自己
3.具體主題角色:存儲(chǔ)相關(guān)狀態(tài)到具體觀察者對(duì)象,當(dāng)具體主題的內(nèi)部狀態(tài)發(fā)生改變時(shí),給所有登記過(guò)的觀察者發(fā)出通知。具體主題角色通常用一個(gè)具體子類實(shí)現(xiàn)。
4.具體觀察者角色:存儲(chǔ)一個(gè)具體主題對(duì)象,存儲(chǔ)相關(guān)狀態(tài),實(shí)現(xiàn)抽象觀察者角色所要求的更新接口,以使得其自身狀態(tài)和主題的狀態(tài)保持一致
作用:
1. 觀察者模式的耦合度較小
2.支持廣播通信
復(fù)制代碼 代碼如下:
<?php
//抽象主題
interface Subject{
     public function attach($observer);
     public function detach($observer);
     public function notifyObservers();
}
//具體主題
class ConcreateSubject implements Subject{
     private $_observers;
     public function __construct(){
          $this->_observers = array();
     }

     public function attach($observer){
          return array_push($this->_observers,$observer);
     }

     public function detach($observer){
          $index = array_search($observer,$this->_observers);
          if($index === false || !array_key_exists($index,$this->_observers)){
               return false;
          }
          unset($this->_observer[$index]);
          return true;
     }

     public function notifyObservers(){
          if(!is_array($this->_observers)){
               return false;
          }
          foreach($this->_observers as $observer){
               $observer->update();
          }
          return true;
     }
}

//抽象觀察者
interface Observer{
     public function update();
}
//具體觀察者
class ConcreteObserver implement Observer{
     private $_name;
     public function __construct($name){
          $this->_name = $name;
     }

     public function update(){
          echo 'Observer',$this->_name.'has notified<br/>';
     }
}

//客戶端
class Client{
     public static function main(){
            $subject = new ConcreteSubject();
            //新增第一個(gè)觀察者
            $observer1 = new ConcreteObserver('Martin');
            $subject->attach($observer1);
            //通知
            $subject->notifyObservers();

            //新增第二個(gè)觀察者
            $observer2 = new ConcreteObserver('jaky');
            $subject->attach($observer2);
            //通知
            $subject->notifyObservers();

            //刪除觀察者1
            $subject->deatch($observer1);
            //通知
            $subject->notifyObservers();
     }
}

Client::main();
?>

php技術(shù)php設(shè)計(jì)模式之觀察者模式的應(yīng)用詳解,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 黄色片网站下载 | 暖暖 视频 在线 观看 高清 | 国产 欧美 亚洲 日韩视频 | 中文字幕成人在线观看 | 2018年免费三级av观看 | 无码日韩人妻精品久久蜜桃免费 | 黑人巨摘花破女处 | 国产嫩草在线观看 | 欧美日韩一区二区三区四区 | 草草久久久亚洲AV成人片 | 青柠电影高清在线观看 | 国产99热在线观看 | 久久亚洲一级α片 | 久久99re2热在线播放7 | 色欲档案之麻雀台上淫 | 国产亚洲精品AV片在线观看播放 | 国产色欲一区二区精品久久呦 | 苍井空a 集在线观看网站 | 精品国产原创在线观看视频 | 久久操热在线视频精品 | 一二三四免费中文在线1 | 浪货嗯啊趴下NP粗口黄暴 | yellow日本动漫高清 | 青青草A在在观免费线观看 青青草AV国产精品 青青草 久久久 | 无码人妻丰满熟妇啪啪网不卡 | 一本色道久久综合亚洲精品蜜桃冫 | 精品欧美18videosex欧美 | 女张腿男人桶羞羞漫画 | 亚洲不卡视频在线 | 一本二卡三卡四卡乱码麻豆 | 色播成人影院 | 破女在线观看视频 | 999国产高清在线精品 | 狠狠躁日日躁人人爽 | 永久免费精品精品永久-夜色 | 久久婷五月综合色啪网 | 久久久久毛片免费观看 | 日韩 亚洲 欧美 中文 高清 | 亚洲精品中文字幕制 | 成人短片迅雷下载 | 中文日产无乱码AV在线观 |