ホームページ > バックエンド開発 > PHPチュートリアル > PHP デザイン パターンの責任連鎖モデルに関する簡単な説明

PHP デザイン パターンの責任連鎖モデルに関する簡単な説明

WBOY
リリース: 2016-07-29 08:58:46
オリジナル
973 人が閲覧しました

責任連鎖モデル

原則: 率直に言えば、自分で処理できない場合は、さまざまなレベルに応じて物事を処理することを意味します。このアプローチは責任連鎖モデルと呼ばれます。

適用シナリオ: 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><span><span>class</span><span>admin</span>{</span><span>protected</span><span>$power</span>=<span>'1'</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><span><span>class</span><span>submits</span>{</span><span>protected</span><span>$power</span>=<span>'3'</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>//责任链最高层(可以不用判断,责任链模式必须要用到最高一层)</span><span><span>function</span><span>police</span>{</span><span><span>function</span><span>make</span><span>(<span>$lev</span>)</span>{</span><span>echo</span><span>'教育处理'</span>;

        }

    }

    <span>//一般是判断权限再去调用区中的类去处理</span><span>//这里的责任链模式</span><span>$lev</span> = <span>$_POST</span>[<span>'lev'</span>];

    <span>$adminObj</span> = <span>new</span> admin();

    <span>$adminObj</span>->make(<span>$lev</span>);

<span>?></span></span></span></code>

ログイン後にコピー

利点:

  1. PHPで判断する必要はなく、最下層を直接呼び出すだけです。
  2. オブジェクト内の相互接続を簡素化できます。
  3. 新しいリクエストクラスはいつでも追加できます。

短所:

  1. システムの最適化に影響する
  2. コードのデバッグが不便
  3. リサイクルが発生する可能性がある

概要:

責任連鎖モデルでは、多くのオブジェクトが各オブジェクトによって制御される参照がフォームに接続されるチェーン。リクエストは、チェーン内のオブジェクトがリクエストの処理を決定するまで、チェーンを上流に渡されます。リクエストを行うクライアントは、チェーン内のどのオブジェクトがリクエストを最終的に処理するかを知りません。これにより、システムはクライアントに影響を与えることなくチェーンを動的に再編成し、責任を割り当てることができます。

責任チェーンモデルの主な利点は、システムの結合を軽減し、オブジェクトの相互接続を簡素化し、同時にオブジェクトへの責任の割り当ての柔軟性を高めることができることです。また、新しいリクエスト処理を追加するのにも便利です。クラス; その主な欠点は、リクエストが確実に受信されることを保証できないことと、比較的長い責任の連鎖の場合、リクエストの処理に複数の処理オブジェクトが関与する可能性があり、システムのパフォーマンスにある程度影響を与えることです。コードのデバッグ時に不便です。

責任連鎖モデルに該当する状況には、複数のオブジェクトが同じリクエストを処理でき、どのオブジェクトがリクエストを処理するかが実行時に自動的に決定され、受信者のリクエストのセットを明示的に指定せずにリクエストが送信されます。リクエストを処理するオブジェクトを動的に指定できます。

')​​.addClass('事前番号付け').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

上記では、内容の側面も含めて、PHP デザイン パターンの責任連鎖モデルについて簡単に説明しましたが、PHP チュートリアルに興味のある友人に役立つことを願っています。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート