オブジェクト間の 1 対多の依存関係を定義します。これにより、オブジェクトの状態が変化するたびに、関連する依存オブジェクトが通知され、自動的に更新されます。 Observer パターン のエイリアスには、Publish/Subscribe パターン、Model/View パターン、Source/Listener パターン、Dependents パターンが含まれます。 オブザーバーパターンはオブジェクトの動作パターンです。 Observer パターン オブジェクトの 1 対多の依存関係を定義して、オブジェクトの状態が変化すると、そのすべての依存関係が通知され、自動的に更新されるようにします
<?php /** * 观察者模式 * @author: Mac * @date: 2012/02/22 */ abstract class Pa { private $_observers = array(); public function register($sub) { } public function trigger() { } } class Paper extends Pa { /* 主题 */ private $_observers = array(); // 存放new的对象 public function register($sub) { /* 注册观察者 */ $this->_observers[] = $sub; } public function trigger() { /* 外部统一访问 */ if (!empty($this->_observers)) { foreach ($this->_observers as $observer) { $observer->update(); } } } } /** * 观察者要实现的接口 */ interface Observerable { public function update(); } class Subscriber1 implements Observerable //观察者 { public function update() { echo "观察者1收到执行通知 执行完毕\n"; } } class Subscriber2 implements Observerable //观察者2 { public function update() { echo "观察者2收到执行通知 执行完毕\n"; } } /* 测试 */ $paper = new Paper(); $paper->register(new Subscriber1()); $paper->trigger();
Observer パターンは、非常に頻繁に使用される設計です。モバイル アプリケーション、Web アプリケーション、デスクトップ アプリケーションのいずれであっても、オブザーバー パターンは、オブジェクト間のリンクを実現するための完全なソリューションを提供します。これには、1 対 1 または 1 対 1 が含まれます。 1 対多のオブジェクト対話シナリオで使用できます。
関連する推奨事項:
以上がPHPデザインパターンのオブザーバーパターンの詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。