PHPデザインパターンのオブザーバーパターンの詳細説明

韦小宝
リリース: 2023-03-17 14:28:02
オリジナル
1932 人が閲覧しました

オブジェクト間の 1 対多の依存関係を定義します。これにより、オブジェクトの状態が変化するたびに、関連する依存オブジェクトが通知され、自動的に更新されます。 Observer パターン のエイリアスには、Publish/Subscribe パターン、Model/View パターン、Source/Listener パターン、Dependents パターンが含まれます。 オブザーバーパターンはオブジェクトの動作パターンです。 Observer パターン オブジェクトの 1 対多の依存関係を定義して、オブジェクトの状態が変化すると、そのすべての依存関係が通知され、自動的に更新されるようにします


<?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();
ログイン後にコピー

Observer パターンは、非常に頻繁に使用される設計です。モバイル アプリケーション、Web アプリケーション、デスクトップ アプリケーションのいずれであっても、オブザーバー パターンは、オブジェクト間のリンクを実現するための完全なソリューションを提供します。これには、1 対 1 または 1 対 1 が含まれます。 1 対多のオブジェクト対話シナリオで使用できます。

関連する推奨事項:

PHP オブザーバー パターンについて知らないこと

PHP オブザーバー パターンのコード例

PHP オブザーバー パターン

以上がPHPデザインパターンのオブザーバーパターンの詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート