> 백엔드 개발 > PHP 튜토리얼 > PHP 디자인 패턴의 책임 사슬 모델에 대한 간략한 토론

PHP 디자인 패턴의 책임 사슬 모델에 대한 간략한 토론

WBOY
풀어 주다: 2016-07-29 08:58:46
원래의
971명이 탐색했습니다.

책임 사슬 모델

원칙: 솔직히 말하면, 스스로 처리할 수 없다면 상사에게 맡기는 것입니다. 이러한 접근 방식을 책임 사슬 모델이라고 합니다.

적용 시나리오: OA 관리 시스템에서 휴가를 요청합니다. 포럼 보고서.

<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

<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으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿