php設(shè)計模式-觀察者模式

// 觀察者模式 主要分為被觀察者,觀察者
// 當(dāng)一個對象(被觀察者)狀態(tài)發(fā)生變化時,依賴它的對象(觀察者)全部會收到通知,并自動更新
// 觀察者模式實現(xiàn)了低耦合,非侵入式的通知與更新機制

// 主題接口
interface Subject{
    public function register(Observer $observer);
    public function notify();
}
// 觀察者接口
interface Observer{
    public function watch();
}

// 主題
class Action implements Subject{
    public $_observers = array();
    // 把觀察者都放在一個數(shù)組里
    public function register(Observer $observer){
        $this->_observers[] = $observer;
    }
    // 通知觀察者變動
    public function notify(){
        foreach($this->_observers as $observer){
            $observer->watch();
        }
    }
}

// 觀察者
class Cat implements Observer{
    public function watch(){
        echo "cat";
    }
}
class Dog implements Observer{
    public function watch(){
        echo "dog";
    }
}
class People implements Observer{
    public function watch(){
        echo "people";
    }
}

// 應(yīng)用實例
$action = new Action();
$action->register(new Cat());
$action->register(new Dog());
$action->register(new People());
$action->notify();

// 輸出 cat dog people
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 單例模式(Singleton Pattern):顧名思義,就是只有一個實例。作為對象的創(chuàng)建模式,單例模式確保某一個...
    程序員祝融閱讀 1,182評論 0 4
  • 問題: 需要一個對象可以被系統(tǒng)中的任何對象使用 對象不能被隨意被覆蓋 系統(tǒng)不能有超過一個該對象 實現(xiàn): 由于構(gòu)造函...
    雨而已閱讀 209評論 0 0
  • 單例模式(Singleton Pattern 單件模式或單元素模式) 單例模式確保某個類只有一個實例,而且自行實例...
    積_漸閱讀 355評論 0 1
  • 單例模式又稱為職責(zé)模式,它用來在程序中創(chuàng)建一個單一功能的訪問點,通俗地說就是實例化出來的對象是唯一的。所有的單例模...
    henryspace閱讀 203評論 0 0
  • 從東海跳出來—— 一個傻乎乎的老大 有時像性烈如火的猛張飛 有時又像一位溫柔善良的姑娘 全身系滿了無數(shù)飄帶 飄帶上...

友情鏈接更多精彩內(nèi)容