ホームページ  >  記事  >  バックエンド開発  >  php_PHP チュートリアルのオブザーバー パターン

php_PHP チュートリアルのオブザーバー パターン

WBOY
WBOYオリジナル
2016-07-21 15:40:16900ブラウズ

オブザーバーのパターン

コードをコピーします コードは次のとおりです:

インターフェース Subject
{
public function Attach($Observer) //オブザーバーを追加します
public function Detach($Observer);オブザーバー
public function Notify(); //条件が満たされた場合にオブザーバーに通知します
public function SubjectState($Subject) //条件を監視します
}
class Boss は Subject を実装します
{
public $_action; _Observer;
パブリック関数 Attach($Observer)
{
$this->_Observer[] = $Observer;
}
パブリック関数 Detach($Observer)
{
$ObserverKey = array_search($this-> ;_Observer);
if($ObserverKey !== false)
{
unset($this->_Observer[$ObserverKey]);
}
}
public function Notify()
{
foreach($this-> ;_Observer as $value )
{
$value->Update();
}
}
public function SubjectState($Subject)
{
$this->_action = $Subject;
}
abstract クラスオブザーバー
{
protected $_UserName;
public function __construct($Name,$Sub)
{
$this->_Sub = $Sub;
public abstract function Update (); //メソッド経由で受信
}
class StockObserver extends Observer
{
public function __construct($name,$sub)
{
parent::__construct($name,$sub);
public function Update( )
{
echo $this->_Sub->_action.$this->_UserName." 早く実行してください..."
}
}
$huhansan = new Boss(); / オブザーバー
$gongshil = new StockObserver("三毛",$huhansan); // オブザーバーを初期化します
$huhansan->Attach($gongshil) // オブザーバーを追加します
$huhansan->Attach($gongshil) ) ; //同一のオブザーバーを追加
$huhansan->Detach($gongshil) //基地内のオブザーバーを追い出す
$huhansan->SubjectState("警察が来ている") //条件を達成
$huhansan->Notify(); //すべての有効なオブザーバーを通して


は、オブザーバー コンテナを継承するクラス (オブザーバーと呼びます) として大まかに理解できます。 、キックアウトオブザーバー、リマインドオブザーバー、および観察条件
オブザーバーの追加は、このコンテナーにいくつかのクラスを登録することと同じです。もちろん、これらのクラスはオブザーバーの応答情報に応答するメソッドを持っている必要があります。
オブザーバー コンテナは、さまざまな観測条件パラメータを受け入れることによって、コンテナ内のすべての登録済みオブザーバーに通知する必要があるかどうかを決定します。
通知条件が満たされると、オブザーバーは対応するメソッドの呼び出しを許可します。そして、対応するオブザーバー インスタンスに変更を実装します
今回はこれですべてです。



http://www.bkjia.com/PHPjc/321454.html

www.bkjia.com
tru​​e

http://www.bkjia.com/PHPjc/321454.html技術記事オブザーバー パターンのコピー コードは次のとおりです。interface Subject { public function Attach($Observer) //オブザーバーを追加します public function Detach($Observer) // オブザーバーをキックアウトします public funct...;
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。