php設計模式之觀察者模式詳解

韦小宝
發布: 2023-03-17 14:28:02
原創
1932 人瀏覽過

定義物件之間的一種一對多依賴關係,使得每當一個物件狀態改變時,其相關依賴物件皆會被通知並被自動更新。 觀察者模式的別名包括發布-訂閱(Publish/Subscribe)模式、模型-視圖(Model/View)模式、來源-監聽器(Source/Listener)模式或從屬者(Dependents)模式。 觀察者模式是一種物件行為型模式。 觀察者模式定義物件的一對多依賴,這樣一來,當一個物件改變狀態時,它的所有依賴者都會收到通知並自動更新!


<?php
/**
 * 观察者模式
 * @author: Mac
 * @date: 2012/02/22
 */

abstract class Pa
{
    private $_observers = array();

    public function register($sub)
    {
    }

    public function trigger()
    {
    }
}

class Paper extends Pa
{ /* 主题    */
    private $_observers = array(); // 存放new的对象

    public function register($sub)
    { /*  注册观察者 */
        $this->_observers[] = $sub;
    }


    public function trigger()
    {  /*  外部统一访问    */
        if (!empty($this->_observers)) {
            foreach ($this->_observers as $observer) {
                $observer->update();
            }
        }
    }
}

/**
 * 观察者要实现的接口
 */
interface Observerable
{
    public function update();
}

class Subscriber1 implements Observerable //观察者
{
    public function update()
    {
        echo "观察者1收到执行通知 执行完毕\n";
    }
}

class Subscriber2 implements Observerable //观察者2
{
    public function update()
    {
        echo "观察者2收到执行通知 执行完毕\n";
    }
}


/*  测试    */
$paper = new Paper();
$paper->register(new Subscriber1());
$paper->trigger();
登入後複製

觀察者模式是一種使用頻率非常高的設計模式,無論是行動應用、網路應用或桌面應用,觀察者模式幾乎無所不在,它為實現物件之間的連動提供了一套完整的解決方案,凡是涉及一對一或一對多的物件互動場景都可以使用觀察者模式。

相關推薦:

你不了解的php觀察者模式

# PHP觀察者模式的程式碼實例

PHP觀察者模式

#

以上是php設計模式之觀察者模式詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板