オブザーバー パターンは、相互に対話する 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.comtruehttp://www.bkjia.com/PHPjc/971940.html技術記事 php のオブザーバー パターンの簡単な例 この記事では、php のオブザーバー パターンの簡単な例を主に紹介します。