責任連鎖モデル
原則: 率直に言えば、自分で処理できない場合は、さまざまなレベルに応じて物事を処理することを意味します。このアプローチは責任連鎖モデルと呼ばれます。
適用シナリオ: OA 管理システムで休暇を申請します。フォーラムのレポート。
1 2 3 4 5 6 7 8 | <code><form action=<span> 'make.php' </span><span>method</span>=<span> 'post' </span>>
<select name=<span> 'lev' </span>>
<<span>option</span><span>value</span>=<span> '1' </span>>脏话</<span>option</span>>
<<span>option</span><span>value</span>=<span> '2' </span>>黄赌毒</<span>option</span>>
<<span>option</span><span>value</span>=<span> '3' </span>>反动国家</<span>option</span>>
</select>
<inout <span><span>type</span>=</span><span> 'submit' </span><span>value</span>=<span> '举报' </span>>
</form></code>
|
ログイン後にコピー
make.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <code><span><span><?php</span><span>
<span> protected </span><span> $top </span> = <span> 'submits' </span>;
<span> public </span><span><span> function </span><span>make</span><span>(<span> $lev </span>)</span>{</span><span> if </span>(<span> $lev </span><=<span> $this </span>->power){
<span> echo </span><span> '删帖子' </span>;
}<span> else </span>{
<span> $topObj </span> = <span> new </span><span> $this </span>->top;
<span> $topObj </span>->make(<span> $lev </span>);
}
}
}
<span>
<span> protected </span><span> $top </span> = <span> 'police' </span>;
<span> public </span><span><span> function </span><span>make</span><span>(<span> $lev </span>)</span>{</span><span> if </span>(<span> $lev </span><=<span> $this </span>->power){
<span> echo </span><span> '禁止用户发言' </span>;
}<span> else </span>{
<span> $topObj </span> = <span> new </span><span> $this </span>->top;
<span> $topObj </span>->make(<span> $lev </span>);
}
}
}
<span>
}
}
<span>
<span> $adminObj </span> = <span> new </span> admin();
<span> $adminObj </span>->make(<span> $lev </span>);
<span>?></span></span></span></code>
|
ログイン後にコピー
利点:
- PHPで判断する必要はなく、最下層を直接呼び出すだけです。
- オブジェクト内の相互接続を簡素化できます。
- 新しいリクエストクラスはいつでも追加できます。
短所:
- システムの最適化に影響する
- コードのデバッグが不便
- リサイクルが発生する可能性がある
概要:
責任連鎖モデルでは、多くのオブジェクトが各オブジェクトによって制御される参照がフォームに接続されるチェーン。リクエストは、チェーン内のオブジェクトがリクエストの処理を決定するまで、チェーンを上流に渡されます。リクエストを行うクライアントは、チェーン内のどのオブジェクトがリクエストを最終的に処理するかを知りません。これにより、システムはクライアントに影響を与えることなくチェーンを動的に再編成し、責任を割り当てることができます。
責任チェーンモデルの主な利点は、システムの結合を軽減し、オブジェクトの相互接続を簡素化し、同時にオブジェクトへの責任の割り当ての柔軟性を高めることができることです。また、新しいリクエスト処理を追加するのにも便利です。クラス; その主な欠点は、リクエストが確実に受信されることを保証できないことと、比較的長い責任の連鎖の場合、リクエストの処理に複数の処理オブジェクトが関与する可能性があり、システムのパフォーマンスにある程度影響を与えることです。コードのデバッグ時に不便です。
責任連鎖モデルに該当する状況には、複数のオブジェクトが同じリクエストを処理でき、どのオブジェクトがリクエストを処理するかが実行時に自動的に決定され、受信者のリクエストのセットを明示的に指定せずにリクエストが送信されます。リクエストを処理するオブジェクトを動的に指定できます。
').addClass('事前番号付け').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i ').text(i));
};
$numbering.fadeIn(1700);
});
});
上記では、内容の側面も含めて、PHP デザイン パターンの責任連鎖モデルについて簡単に説明しましたが、PHP チュートリアルに興味のある友人に役立つことを願っています。