オブザーバー パターンについては、あまり馴染みがないかもしれません。これはイベント システムであり、このパターンにより、クラスが別のクラスの状態を観察できるようになります。観察されたクラスの状態が変化するとき、いつ、観察クラスが変化するか通知を受信し、対応するアクションを実行できます。オブザーバー パターンは、コンポーネント間の密結合を回避する別の方法を提供します。この記事では、オブザーバー パターンが何であるかについて説明します。
関連する推奨事項: 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'我只明白一件事,爱一个人,是那么痛苦<br />'; } } //创建对象 $xiaoming = new Man(); $xiaohua =new GirlFriend(); $xiaoli = new GirlFriend(); //添加观察者 $xiaoming->addObserver( $xiaohua); $xiaoming->addObserver($xiaoli); $xiaoming->buy();
実行結果は次のとおりです:
オブザーバーを追加するメソッドがある場合の場合、オブザーバーを削除するメソッドがあるため、オブザーバーを削除するメソッド
function delObserver($observer) { //查找对应值在数组中的键 $key = array_search($observer,$this->observers); //根据键删除值,并且数组重新索引 array_splice($this->observers, $key, 1); } }
//Delete
$xiaoming->delObserver( $xiaohua);
コードも追加する必要があります。次のように:
推奨学習: 「PHP ビデオ チュートリアル 」
以上がPHP のオブザーバー パターンとは何ですか?それの使い方?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。