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

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

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

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

この記事では、phpのオブザーバーパターンの簡単な例を主に紹介します。オブザーバーパターンは、2つ以上の相互作用を含むデザインパターンで一般的なパターンです。実装コードを直接提供するので、必要な友達はそれを参照できます

オブザーバー パターンは、相互に対話する 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(){
$this->値を返す;
}
}

クラス DemoObserver は SplObserver{
を実装します public function update(SplSubject $subject){
echo '新しい値は ' $subject->getValue();
}
}

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

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