首頁 > 後端開發 > php教程 > 淺談php設計模式之責任鏈模式

淺談php設計模式之責任鏈模式

WBOY
發布: 2016-07-29 08:58:46
原創
972 人瀏覽過

責任鏈模式

原理:坦白來講就是說按照不同的等級去處理事情,如果自己處理不了就交給上級去處理。這種處理方式叫做責任鏈模式。

應用場景: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('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i

').text(i)); }; $numbering.fadeIn(1700); }); }); 以上就介紹了淺談php設計模式之責任鏈模式,包含了面向的內容,希望對PHP教學有興趣的朋友有幫助。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板