ホームページ  >  記事  >  バックエンド開発  >  PHP のオブザーバー パターンとは何ですか?それの使い方?

PHP のオブザーバー パターンとは何ですか?それの使い方?

慕斯
慕斯オリジナル
2021-06-23 11:23:021620ブラウズ

オブザーバー パターンについては、あまり馴染みがないかもしれません。これはイベント システムであり、このパターンにより、クラスが別のクラスの状態を観察できるようになります。観察されたクラスの状態が変化するとき、いつ、観察クラスが変化するか通知を受信し、対応するアクションを実行できます。オブザーバー パターンは、コンポーネント間の密結合を回避する別の方法を提供します。この記事では、オブザーバー パターンが何であるかについて説明します。

関連する推奨事項: PHP のファクトリ パターンとファクトリ メソッド パターンとは何ですか?

オブザーバー:

これはイベント システムです。つまり、このパターンにより、クラスが別のクラスの状態を監視できるようになります。監視クラスの変更を監視すると、監視クラスは通知を受け取り、対応するアクションを実行できます。オブザーバー パターンは、コンポーネント間の密結合を回避する別の方法を提供します。

コードは引き続き使用されます。たとえば、新しいファイルを作成し、クラスを作成し、そのクラスにメンバー属性 (オブザーバーを格納する配列) を記述します。次に、オブザーバーを格納するために使用されるメソッドを定義します。オブザーバーを追加すると、オブザーバーに通知を受け取り、特定の応答を行うことができます。コードは例です:

<?php
class Man
{
//用来存放观察者
protected $observers = [];
//添加观察者方法
function addObserver($observer)
{
  $this->observers[]=$observer;
}
//花钱方法
function buy()
{
//当被观察者做出这个行为的时候,让观察者得到通并且做出一-定的反应
foreach ($this->observers as $girl) {
  $girl->pome();
}
}
}
class GirlFriend
{
function pome()
{
echo&#39;我只明白一件事,爱一个人,是那么痛苦<br />&#39;;
}
}
//创建对象
$xiaoming = new Man();
$xiaohua =new GirlFriend();
$xiaoli = new GirlFriend();
//添加观察者
$xiaoming->addObserver( $xiaohua); 
$xiaoming->addObserver($xiaoli);
$xiaoming->buy();

実行結果は次のとおりです:

PHP のオブザーバー パターンとは何ですか?それの使い方?

オブザーバーを追加するメソッドがある場合の場合、オブザーバーを削除するメソッドがあるため、オブザーバーを削除するメソッド

function delObserver($observer)
{
//查找对应值在数组中的键
$key = array_search($observer,$this->observers);
//根据键删除值,并且数组重新索引
array_splice($this->observers, $key, 1);
}
}

//Delete

$xiaoming->delObserver( $xiaohua);

コードも追加する必要があります。次のように:

PHP のオブザーバー パターンとは何ですか?それの使い方?

推奨学習: 「PHP ビデオ チュートリアル

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。