ホームページ >バックエンド開発 >PHPチュートリアル >php のオブザーバー パターンの簡単な例、php オブザーバー example_PHP チュートリアル

php のオブザーバー パターンの簡単な例、php オブザーバー example_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:09:20872ブラウズ

PHPのオブザーバーパターンの簡単な例、PHPオブザーバーの例

オブザーバー パターンは、相互に対話する 2 つ以上のクラスを含む、デザイン パターンの一般的なパターンです。このモードでは、クラスが別のクラスの状態を観察できるようになり、観察対象のクラスの状態が変化すると、オブザーバーに通知され、対応する状態が更新されます。

php の SPL 標準クラス ライブラリは、実装用に SplSubject および SplObserver インターフェイスを提供します。監視対象のクラスはサブジェクトと呼ばれ、監視を担当するクラスはオブザーバーと呼ばれます。このモードでは、SplSubject クラスが特定の状態を維持します。

このステータスが変化すると、notify メソッドが呼び出されます。通知メソッドを呼び出すと、attach メソッドを使用して以前に登録されたすべての SplObserver インスタンスの更新メソッドが呼び出されます。デモは次のとおりです。

コードをコピーします コードは次のとおりです:
クラス DemoSubject は SplSubject{
を実装します プライベート $observers、$value;

パブリック関数 __construct(){
$this->observers = array();
}

パブリック関数attach(SplObserver $observer){
$this->observers[] = $observer;
}

パブリック関数 detach(SplObserver $observer){
If($idx = array_search($observer, $this->observers, true)){
unset($this->observers[$idx]);
}
}

パブリック関数notify(){
foreach($this->observers as $observer){
$observer->update($this);
}
}

パブリック関数 setValue($value){
$this->value = $value;
$this->notify();
}

パブリック関数 getValue(){
return $this->value;
}
}

クラス DemoObserver は SplObserver{
を実装します パブリック関数の更新(SplSubject $subject){
echo '新しい値は ' $subject->getValue();
}
}

$subject = 新しい DemoSubject();
$observer = 新しい DemoObserver();
$subject->attach($observer);
$subject->setValue(5);

http://www.bkjia.com/PHPjc/945719.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/945719.html技術記事 php のオブザーバー パターンの簡単な例、php オブザーバー インスタンス オブザーバー パターンは、相互に対話する 2 つ以上のクラスを含む、デザイン パターンの一般的なパターンです。このモードでは...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。