[PHPのデザインパターン]責任のパターンのチェーン

 Chain of Responsibilityパターンは、要求にチェーン受信者オブジェクトを作成します。このタイプのモデルは、要求送信者と受信者のデカップリングに、要求を与えられました。デザインパターンのこのタイプは、行動パターンを属します。

 このモードでは、各受信機は、典型的には、別の受信者への参照を含みます。オブジェクトが要求を処理できない場合は、その次の受信者に同じ要求を渡す、となります。

<?PHPは
 定義( "WARNING_LEVEL"、1 );
定義( "DEBUG_LEVEL"、2 )。
定義( "ERROR_LEVEL"、3 ); 

抽象 クラスAbstractLog {
     保護 $レベル保護された の$ nextlogger 

    パブリック 関数 __construct($レベル){
         $この - >レベル= $レベル
    } 

    パブリック 関数 setNextLogger($のnext_logger ){
         $この - > nextlogger = $ next_logger 
    } 

    パブリック 関数 LogMessageに($レベル$メッセージ){
         場合$この - >レベル== $レベル){
             $この - >ライト($メッセージ)。
        } 

        もし$この - > {nextlogger)
             $この - > nextlogger-> LogMessageに($レベル$メッセージ)。
        } 
    } 

    抽象 関数ライト($メッセージ)。
} 

クラス DebuggLoggerは延びAbstractLog {
     パブリック 関数を書き込み($メッセージ){
         エコー "デバッグ情報:{ $メッセージ } \ n" 
    } 
} 

クラス WarningLoggerは延びAbstractLog {
     パブリック 関数ライト($メッセージ){
         エコー "警告情報:{ $メッセージ } \ n"を
    } 
} 

クラス ErrorLoggerは拡張AbstractLog {
     パブリック 関数の書き込み($メッセージ){
         エコー "エラー情報:{ $メッセージ } \ nを" ; 
    }
} 

関数getChainOfLoggers(){
     $警告 = 新しいWarningLogger(WARNING_LEVEL)。
    $ debugg = 新しいDebuggLogger(DEBUG_LEVEL)。
    $エラー = 新しいErrorLogger(ERROR_LEVEL)。

    $警告 - > setNextLogger($のdebugg )。
    $のdebugg - > setNextLogger($エラー)。

    リターン $警告
} 

$鎖 = getChainOfLoggers()。

$チェーン - > LogMessageに(WARNING_LEVEL、 "这是一条警告" );
$チェーン - > LogMessageに(DEBUG_LEVEL、 "这是一条デバッグ" );
$チェーン- > LogMessageに(ERROR_LEVEL、 "これは致命的なエラーです");

輸出

情報警告:これは警告である
デバッグ情報これはデバッグで
エラー情報:これは致命的なエラーです

 

おすすめ

転載: www.cnblogs.com/itsuibi/p/11059625.html