php設計模式(三)觀察者模式

//不同的對象,會有不同的處理方式

/**
 * 場景:一個事件發生後,要執行一連串更新操作.傳統的編程方式,
 * 就是在事件的代碼之後直接加入處理邏輯,
 * 當更新得邏輯增多之後,代碼會變得難以維護.這種方式是耦合的
 * ,侵入式的,增加新的邏輯需要改變事件主題的代碼
 * 觀察者模式實現了低耦合,非侵入式的通知與更新機制。
 */

interface Wemessage
{
    // 觀察者要實現的接口
    public function send();
}

class Wepush implements Wemessage // 最終實現微信消息的類
{
    public function send()
    {
        echo '發送微信消息';
    }
}

class Payafter
{
    // 修改訂單信息
    private $_ob = [];  // 觀察者模式

    // 修改訂單信息
    public function register($obj) // 註冊
    {
        $this->_ob = $obj;
    }

    public function trigger() // 統一執行訪問
    {
        if (!empty($this->_ob)) {
            foreach ($this->_ob as $value) {
                $value->send();
            }
        }
    }

}

$payAfter = new Payafter();
$payAfter->register(new Wepush()); // 註冊觀察者
$payAfter->tirgger(); // 執行代碼

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章