<?php
/**
* 观察者模式
* @author: Mac
*/
class Paper{ /* 主题 */
private $_observers = array ();
public function register( $sub ){ /* 注册观察者 */
$this ->_observers[] = $sub ;
}
public function trigger(){ /* 外部统一访问 */ public 関数 trigger(){ /* 外部统一访问 */
if (! empty ( $this ->_observers)){
foreach ( $this ->_observers as $observer ){
$observer ->update();
}
}
}
}
/**
* 观察者要实现的接口
*/
interface Observerable{
public function update(); public 関数 update();
}
class Subscriber implements Observerable{
public function update(){ public 関数 update(){
echo "Callbackn" ;
}
}
|
以下はテストコードです
/* 测试 */
$paper = new Paper();
$paper ->register( new Subscriber());
//$paper->register(new Subscriber1());
//$paper->register(new Subscriber2());
$paper ->trigger();
|
要約する 新しいオブジェクトを入力する場合は、それをサブジェクト (オブザーバブルとも呼ばれます) に登録するだけで済みます (登録方法は多数あり、構築中、またはフレームワークによってアクセスされるインターフェイスに登録することもできます)。次に、コードを直接実装します。新しいオブジェクトのインターフェイスでそれを実行します。これにより、被写体と観察者のオブジェクト間の結合が減少します。 優れたデザインパターンはコードに直接組み込まれるのではなく、脳に組み込まれます。