php設計模式 觀察者模式,設計模式觀察者_PHP教程

來源:互聯網
上載者:User

php設計模式 觀察者模式,設計模式觀察者


觀察者模式的核心是把客戶元素(觀察者)從一個中心類(主體)中分離開來。當主體知道事件發生時,觀察者需要被通知到。同時,我們並不希望將主體與觀察者之間的關係進行寫入程式碼。為了達到這個目的,我們可以允許觀察者在主體上進行註冊。

觀察者模式實現了低耦合、非侵入式的通知與更新機制。

情境:當一個事件發生後,要執行一連串更新操作。

EventGenerator.php
phpnamespace Baobab;/** * Class EventGenerator 基類,事件發生者 */abstract class EventGenerator{    //觀察者對於事件發生者是不可見的,事件發生者不關心有哪些觀察者關注了事件    private $observers = array();    /**     * 添加觀察者     */    function addObserver(Observer $observer){        $this->observers[] = $observer;    }    /**     *逐個通知觀察者進行更新的操作     */    function notify(){        foreach($this->observers as $observer){            $observer->update();        }    }}
Observer.php
phpnamespace Baobab;/** * Class Observer 觀察者,觀察的對象是事件發生者 * @package Baobab */interface Observer{    /**     * @param null $event_info  事件的資訊     * 表示事件發生後進行更新的操作     */    function update($event_info = null);}

index.php

class Event extends \Baobab\EventGenerator{    /**     *觸發一個新的事件     */    function trigger(){        echo 'Event發生';        $this->notify();    }}/** * 觀察者1 */class Observer1 implements \Baobab\Observer{    function Update($event_info = null){        echo '更新作業碼1';    }}
/**
* 觀察者2
*/class Observer2 implements \Baobab\Observer{ function Update($event_info = null){ echo '更新作業碼2'; }}$event = new Event();$event->addObserver(new Observer1());$event->addObserver(new Observer2());$event->trigger();

http://www.bkjia.com/PHPjc/1105142.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1105142.htmlTechArticlephp設計模式 觀察者模式,設計模式觀察者 觀察者模式的核心是把客戶元素(觀察者)從一個中心類(主體)中分離開來。當主體知道事件...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.