導入
オブザーバー パターンは、オブジェクトの 1 対多の依存関係を定義するため、オブジェクトの状態が変化すると、そのすべての依存関係が通知され、自動的に更新されます。
設計原則
オブザーバー パターンでは、すべてが変化します。被験者と観察者の数。このパターンを使用すると、テーマを変更せずに、テーマの状態に依存するオブジェクトを変更できます。 ——プログラムの変化する側面を見つけ出し、それを固定的な側面から分離します。
サブジェクトとオブザーバーの両方がインターフェイスを使用します。オブザーバーはサブジェクトに登録するためにサブジェクトのインターフェイスを使用し、サブジェクトはオブザーバー インターフェイスを使用します。観察を通知するため。これにより、疎結合の利点を活かしながら、これら 2 つが正常に動作するようになります。 ——実装プログラミングではなく、インターフェース プログラミングです。
オブザーバー モードは、「合成」を使用して、多くのオブザーバーをトピックに結合します。オブジェクト (オブザーバー - サブジェクト) 間のこの関係は、継承ではなく、実行時の合成によって生成されます。 ——より多くの組み合わせを使用し、継承を減らします。
コード
コードをコピー コードは次のとおりです:
/**
* 観察者パターン
* @作成者: Mac
* @日付: 2012/02/22
*/
class Paper{ /* Theme*/
private $_observers = array();
public function register($sub){ /* オブザーバーを登録します*/
$this->_observers[] = $sub;
}
public functiontrigger(){ /* 外部統合アクセス*/
if(!empty( $this ->_observers)){
foreach($this->_observers as $observer){
$observer->update();
}
}
}
}
/**
* オブザーバーによって実装されるインターフェース
*/
interface Observerable{
public function update();
}
class Subscriber 実装 Observerable{
echo "Callbackn"
}
}
//以下はテストコードです
/*テスト*/
$paper = new Paper();
$paper->register(new Subscriber());
//$paper->register(new Subscriber1()); register(new Subscriber2 ());
$paper->trigger();
概要
新しいオブジェクトを入力する場合は、それをトピック (オブザーバブルとも呼ばれます) に登録するだけです。 (登録にはさまざまな方法があります。構築中またはフレームワークによってアクセスされるインターフェイス内で登録することもできます)。その後、新しいオブジェクトのインターフェイスにコードを直接実装します。これにより、被写体と観察者のオブジェクト間の結合が減少します。
優れたデザインパターンはコードに直接組み込まれるのではなく、脳に組み込まれます。
http://www.bkjia.com/PHPjc/325135.html
www.bkjia.com
truehttp://www.bkjia.com/PHPjc/325135.html技術記事オブジェクトの 1 対多の依存関係を定義するオブザーバー パターンの導入により、オブジェクトの状態が変化すると、そのすべての依存関係が通知され、自動的に更新されます。設計原則はオブザーバー パターンにあります...