浅谈php设计模式之责任链模式
来源:互联网 发布:一年程序员觉得很累 编辑:程序博客网 时间:2024/05/22 03:27
责任链模式
原理:坦白来讲就是说按照不同的等级去处理事情,如果自己处理不了就交给上级去处理。这种处理方式叫做责任链模式。
应用场景:OA管理系统中请假。论坛举报。
<form action='make.php' method='post'> <select name='lev'> <option value='1'>脏话</option> <option value='2'>黄赌毒</option> <option value='3'>反动国家</option> </select> <inout type='submit' value='举报'></form>
make.php
<?php //版主权限 class admin{ protected $power='1'; protected $top = 'submits'; public function make($lev){ if($lev<=$this->power){ echo '删帖子'; }else{ $topObj = new $this->top; $topObj->make($lev); } } } //管理员权限 class submits{ protected $power='3'; protected $top = 'police'; public function make($lev){ if($lev<=$this->power){ echo '禁止用户发言'; }else{ $topObj = new $this->top; $topObj->make($lev); } } } //警察权限 //责任链最高层(可以不用判断,责任链模式必须要用到最高一层) function police{ function make($lev){ echo '教育处理'; } } //一般是判断权限再去调用区中的类去处理 //这里的责任链模式 $lev = $_POST['lev']; $adminObj = new admin(); $adminObj->make($lev);?>
优点:
- 在php中不用做判断,这里直接调用最底层就行。
- 可以简化对象中的相互连接 。
- 可以随时增加新的请求类。
缺点:
- 系统优化会受到影响
- 代码调试不方便
- 可能会造成循环利用
总结:
在职责链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织链和分配责任。
职责链模式的主要优点在于可以降低系统的耦合度,简化对象的相互连接,同时增强给对象指派职责的灵活性,增加新的请求处理类也很方便;其主要缺点在于不能保证请求一定被接收,且对于比较长的职责链,请求的处理可能涉及到多个处理对象,系统性能将受到一定影响,而且在进行代码调试时不太方便。
职责链模式适用情况包括:有多个对象可以处理同一个请求,具体哪个对象处理该请求由运行时刻自动确定;在不明确指定接收者的情况下,向多个对象中的一个提交一个请求;可动态指定一组对象处理请求。
2 0
- 浅谈php设计模式之责任链模式
- PHP设计模式漫谈之责任链模式
- 设计模式之责任链
- 设计模式之责任链
- 设计模式之【责任链】
- 设计模式之责任链
- 设计模式之责任链
- 设计模式之责任链
- 十 设计模式之责任链模式
- 设计模式之--责任链模式
- 设计模式之责任链模式
- 设计模式之责任链模式
- 【设计模式】之责任链模式
- java设计模式之责任链模式
- 设计模式之(责任链模式)
- 设计模式之--责任链模式
- 设计模式之责任链模式
- 设计模式之责任链模式
- HashMap实现分析
- 利用正则表达式选取出字符串中存在的链接
- jsp与servlet通信
- 泛型集合的支持
- GCD常用函数和文件剪切
- 浅谈php设计模式之责任链模式
- java 移动数字“0”算法
- 类型延拓符的应用
- 顺序表的比较和删除
- hdfs file md5 计算,实现本地与hdfs同步文件
- 文件操作函数
- @date2016-03-16 00:05(软件工程男的日常)
- 归并两个递增序列链表为一个递减有序链表
- java 反转二叉树算法