PHP内部の通知メカニズムを実現し、一つのクラスの属性が変化した場合、もう一つのクラスは通知を受け取ることができる.
1322 ワード
設計モードせっけいもーど:オブザーバモードオブザーバモードオブザーバモード
オブジェクトのステータスが変更されると、依存するオブジェクトはすべて通知され、自動的に更新されます.
シーンの操作
1つのイベントが発生した後、一連の更新操作を実行します.従来のプログラミング方式は、イベントのコードの後に直接処理ロジックを加えることであり、更新されたロジックが増えると、コードのメンテナンスが難しくなり、この方式は結合され、侵入的であり、新しいロジックを増やすにはイベントのテーマを変えるコードが必要である.観察者モードは低結合,非侵入式の通知と更新機構を実現した.
リファレンスリンク
PHPオブザーバモード
オブジェクトのステータスが変更されると、依存するオブジェクトはすべて通知され、自動的に更新されます.
シーンの操作
1つのイベントが発生した後、一連の更新操作を実行します.従来のプログラミング方式は、イベントのコードの後に直接処理ロジックを加えることであり、更新されたロジックが増えると、コードのメンテナンスが難しくなり、この方式は結合され、侵入的であり、新しいロジックを増やすにはイベントのテーマを変えるコードが必要である.観察者モードは低結合,非侵入式の通知と更新機構を実現した.
リファレンスリンク
PHPオブザーバモード
observers[] = $observer;
}
public function notify($info = '')
{
foreach ($this->observers as $observer) {
$observer->getInfo($info);
}
}
}
interface Observer
{
function getInfo($info = '');
}
class Observer1 implements Observer
{
public function getInfo($info = '')
{
echo $info;
}
}
class Events extends EventGenerator
{
private $info = 'init';
public function trigger($info = '')
{
echo "before:".$this->info."\r
";
$this->info = $info;
echo "after:".$this->info."\r
";
$this->notify($info);
}
}
$event = new Events();
$event->addObservers(new Observer1());
$event->trigger('hello world');