ホームページ >バックエンド開発 >PHPチュートリアル >PHPデザインパターンObserver(オブザーバーパターン)_PHPチュートリアル

PHPデザインパターンObserver(オブザーバーパターン)_PHPチュートリアル

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

复制代解答代打如下:

/**
* オブザーバーパターン
*
* オブジェクト間の 1 対多の依存関係を定義します。これにより、オブジェクトの状態が変化すると、それに依存するすべてのオブジェクトが通知され、自動的に更新されます
* 簡単に作成できます 表示するオブジェクトターゲットオブジェクトのステータスを取得し、コアオブジェクトから切り離された指定された機能を提供します
* プラグインシステム
*/
class Observerable
{
private $_observers = array();

パブリック関数 registerObserver($observer)
{
$this->_observers[] = $observer;
}

パブリック関数removeObserver($observer)
{
$key = array_search($observer,$this->_observers);
if(!($key === false))
{
unset($this->_observers[$key]);
}
}

public function NoticeObservers()
{
foreach($this->_observers as $observer)
{
if($observerinstanceofObserver) $observer->update($this);
}
}
}

インターフェースオブザーバー
{
public function update($observer);
}

インターフェース DisplayElement
{
パブリック関数 display();
}

// -- 例类定义
class NewsObserverable extends Observerable
{
private $_sports_news;
パブリック関数 setSportsNews($data)
{
$this->_sports_news = $data;
$this->notifyObservers();
}

public function getSportsNews()
{
return $this->_sports_news;
}

プライベート $_local_news;
パブリック関数 setLocalNews($data)
{
$this->_local_news = $data;
$this->notifyObservers();
}

public function getLocalNews()
{
return $this->_local_news;
}
}

クラス SportsNews は Observer,DisplayElement を実装します
{
private $_data = null;
パブリック関数 update($observer)
{
if($this->_data != $observer->getSportsNews())
{
$this->_data = $observer->getSportsNews();
$this->display();
}
}

public function display()
{
echo $this->_data.date("Y-m-d H:i:s")."
";
}
}

クラス LocalNews は Observer,DisplayElement を実装します
{
private $_data = null;
パブリック関数 update($observer)
{
if($this->_data != $observer->getLocalNews())
{
$this->_data = $observer->getLocalNews();
$this->display();
}
}

public function display()
{
echo $this->_data.date("Y-m-d H:i:s")."
";
}
}

// -- 实例化 ---

$objObserver = new NewsObserverable();
$local = 新しい LocalNews();
$sports = 新しいスポーツニュース();

$objObserver->registerObserver($local);
$objObserver->registerObserver($sports);

$objObserver->setSportsNews("スポーツニュース 1 ");
$objObserver->setLocalNews("ローカル ニュース 1 ");
$objObserver->removeObserver($sports);
$objObserver->setLocalNews("ローカル ニュース 2 ");
$objObserver->setSportsNews("スポーツニュース 2 ");
$objObserver->removeObserver($local);
$objObserver->setLocalNews("ローカル ニュース 3 ");

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/323800.html技術記事例: ?php /** * 観察者モード * * オブジェクトの 1 つを定義し、複数の依存関係を定義し、1 つのオブジェクトの状態が変更されると、すべてのオブジェクトが依存します...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。