PHPオブザーバーパターン

WBOY
WBOYオリジナル
2016-06-23 13:36:23848ブラウズ

最初に定義について話すのはやめて、最初にアプリケーション シナリオを見てみましょう。Lao Meng さん、シナリオからデザイン パターンを考える方が明らかに理解しやすいです。

シナリオ: 新しいユーザー名を登録した後、何をする必要がありますか: 1. 新しいユーザーにポイントを送信しますか? 2. 新しいユーザーに割引を受けますか? 3. 新しいユーザーのログを記録します

オブザーバー モード:

シナリオを通じて分析できますユーザーが登録した後、システムは一連のビジネス ロジックをオブザーバー (ポイント オブザーバー、割引オブザーバー、ログ オブザーバーなど) として考えることができます。

これらのオブザーバーはユーザー クラスをリッスンしています。 、ユーザーが登録アクションを実行した後、オブザーバーはそれぞれ独自のビジネス ロジックを開始します。

分析: アプリケーション シナリオ全体は 2 つのクラスで完了できます。1 つはオブザーバー クラス、もう 1 つは監視対象クラス (テーマ) です。これらのクラスには独自のインターフェイスがあり、オブザーバー クラスのインターフェイスは、監視対象からの通知を受信します。その後、ステータスを更新します。オブザーバーインターフェイスは

//Subject クラスインターフェイス (observer)
interface SubjectInterface{
public function addObserver();
}
//Observer インターフェイス
interface ObserverInterface{
public function beginActionAfterNotifity();
}

//Subject クラス
class Subjectimplements SubjectInterface{
private $_oberver=array();
//オブザーバーを追加
public function addObserver($observer){
$ this -& gt; _oberver [] = $ Oberver
}
// 通知
パブリック関数 notification () {
Foreach ($ this- & gt; _oberver as $ oberver) {
$ oberver- & gt; );
}
}

}
//Point クラス
class Point は ObserverInterface を実装します{
public function beginActionAfterNotifity(){
echo "ポイントがプレゼントされます";
}
}
//Discount クラス
class Coupon は ObserverInterface を実装します{
public function beginActionAfterNotifity () {

((? ";
}}} // Log Class
Class Log Implements ObserverInterface {
Public Function BeginAFTERNOTIFITITITO () {

" "" "" "((((";


}
}
//アクションクラス
class User {
Function addUser(){
use using 's 's 's to 's to use 's アウト アウト アウト アウト アウト‐‐ $ subject->addObserver(new Point());
$subject->addObserver(new Coupon());
$subject->addObserver(newログ());
}
}



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。