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.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/945719.html
技術記事
php のオブザーバー パターンの簡単な例、php オブザーバー インスタンス オブザーバー パターンは、相互に対話する 2 つ以上のクラスを含む、デザイン パターンの一般的なパターンです。このモードでは...