責任鏈模式
原理:坦白來講就是說按照不同的等級去處理事情,如果自己處理不了就交給上級去處理。這種處理方式叫做責任鏈模式。
應用場景: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>
優點:
缺點:
總結引用而連結起來形成一條鏈。請求在這個鏈上傳遞,直到鏈上的某一個物件決定處理此請求。發出這個請求的客戶端並不知道鏈上的哪一個物件最終處理這個請求,這使得系統可以在不影響客戶端的情況下動態地重新組織鍊和分配責任。
職責鏈模式的主要優點在於可以降低系統的耦合度,簡化物件的相互連接,同時增強給物件指派職責的靈活性,增加新的請求處理類別也很方便;其主要缺點在於不能保證請求一定被接收,且對於比較長的職責鏈,請求的處理可能涉及到多個處理對象,系統效能將受到一定影響,而且在進行程式碼調試時不太方便。
職責鏈模式適用情況包括:有多個物件可以處理同一個請求,具體哪個物件處理該請求由運行時刻自動決定;在不明確指定接收者的情況下,向多個物件中的一個提交一個請求;可動態指定一組物件處理請求。
').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i
').text(i)); }; $numbering.fadeIn(1700); }); }); 以上就介紹了淺談php設計模式之責任鏈模式,包含了面向的內容,希望對PHP教學有興趣的朋友有幫助。