时间:2021-07-01 10:21:17 帮助过:15人阅读
原理:坦白来讲就是说按照不同的等级去处理事情,如果自己处理不了就交给上级去处理。这种处理方式叫做责任链模式。
应用场景:OA管理系统中请假。论坛举报。
- <code></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 <= lines; i++) { $numbering.append($('以上就介绍了浅谈php设计模式之责任链模式,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。