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

溫馨提示×

溫馨提示×

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

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

PHP設計模式之觀察者模式

發布時間:2020-08-01 02:56:12 來源:網絡 閱讀:295 作者:小海哥2010 欄目:web開發

觀察者模式可以這么理解,比如說一個辦公室里的員工,都有炒股的愛好。而項目經理經常出差不在辦公室,所以他們除了工作就可以進行炒股,但是為了避免經理回來時看到,所以他們需要知道經理什么時候回來進辦公室。于是他們可以跟前臺聯合,如果經理回來,那么前臺只需要給其中一人打電話,那么所有人就知道經理回來了。如果把經理回來當做一個對像,各個員工當做一個對像。那么當經理回來這個對像狀態改變時,各個員工對象的狀態都發生相應的改變。

所謂觀察者模式,即是定義對像間的一種一對多的依賴關系。以便一個對象的狀態發生改變時,所有依賴于它的對像都能得到通知并自動改變狀態。

這里我們可以以老板和員工為例:

interface Boss{
public function attach(Observer $observer);
public function detach(Observer $observer);
public function notifyMsg();
}
interface Observer{
     public function change();
}
class Secretary implements Boss{
   private $observers = array();
    public function attach(Observer $observer){
          if(!in_array($observer,$this->observers)){
               $this->observers[]=$observer;
     }
     }
     public function detach(Observer $observer){
          if($index=array_search($observer,$this->observers)){
               unset($this->observers[$index]);
          }
     }
     public function notifyMsg(){
        foreach($this->observers as $observer){
               $observer->change();
     }
     }
}
class Observer1 implements Observer{
     public function change(){
         echo 'Continue to work!';
}
}
class Observer2 implements Observer{
     public function change(){
       echo 'Go to toilet';
     }
}

$Secretary =new Secretary();
$observer1 =new Observer1();
$observer2 =new Observer2();
$Secretary->attach($observer1);
$Secretary->attach($observer2);
$Secretary->notifyMsg();

這里不是應用了繼承的方式,而是組合的方式,將觀察者各個對象組合到Boss這個主題中。

向AI問一下細節

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

AI

阆中市| 宣城市| 黄浦区| 洪湖市| 滁州市| 建平县| 岢岚县| 通海县| 高唐县| 如皋市| 湄潭县| 婺源县| 安新县| 德保县| 麦盖提县| 高邮市| 涿州市| 潮州市| 达拉特旗| 句容市| 上栗县| 靖宇县| 荣成市| 吴江市| 海淀区| 沧州市| 石屏县| 三亚市| 玉溪市| 永康市| 临猗县| 福贡县| 栖霞市| 甘孜| 怀化市| 清水河县| 凯里市| 杭锦后旗| 漯河市| 日土县| 尚志市|