php 责任链模式

又叫职责链模式。包含了一些命令对象和一些处理对象,每个处理对象决定它能处理那些命令对象,它也知道应该把自己不能处理的命令对象交下一个处理对象,该模式还描述了往该链添加新的处理对象的方法。

示例情景一:

当用户发布一个帖子时:

如果版主可以决定,就版主处理;

如果版主不能决定,就交给上一级管理员处理;

如果管理员不能决定,就交给上一级治安部门处理;

示例情景二:

当一个员工请假时:

如果组长可以决定,就组长处理;

如果组长不能决定,就交给上一级主管处理;

如果主管不能决定,就交给上一级经理处理;

如果经理不能决定,就交给上一级人事处理。


以情景一示例:

//示例:当处理一个帖子时,
//如果不文明严重程度处理
//1级,版主删帖
//2级,管理员封账号
//3级,治安部门管理 //版主
class board{
protected $level = 1;//当前级别为1
protected $top = 'admin';//高一级的处理 public function process($lv=1){
if($lv <= $this->level){
echo '版主删帖' . '<br/>';
}else{
$topCls = new $this->top;
$topCls->process($lv);
}
}
} //管理员
class admin{
protected $level = 2;//当前级别为2
protected $top = 'police';//高一级的处理 public function process($lv=2){
if($lv <= $this->level){
echo '管理员冻结登录账号' . '<br/>';
}else{
$topCls = new $this->top;
$topCls->process($lv);
}
}
} //治安部门
class police{
public function process($lv=3){
echo '治安部门参与治理' . '<br/>';
}
} $lv = isset($_GET['lv'])?$_GET['lv']:1; $cls = new board();
$cls->process($lv);

最新文章

  1. JavaScript 自定义对象
  2. SQL Server解决孤立用户浅析
  3. MultiThread
  4. thwen 缓动框架
  5. 人工神经网络NN
  6. HttpClient封装工具类
  7. 写 test-case心得
  8. dbms_sql包的用法
  9. form v
  10. 基于.net mvc的校友录(七、文件上传以及多对多关系表的LINQ查询实现)
  11. sqort函数用法总结
  12. C# WinForm 中ComboBox数据绑定的问题 (转)
  13. C#的XML文件的读取与写入
  14. python实战--数据结构二叉树
  15. java的冒泡排序
  16. Bayesian generalized linear model (GLM) | 贝叶斯广义线性回归实例
  17. npm install --save 和 --save-dev
  18. 使用 ipmitool 实现远程管理Dell 系列服务器
  19. HDUOJ-----Computer Transformation
  20. jquery中的load方法加载页面无法缓存问题

热门文章

  1. [BZOJ1050][HAOI2006]旅行comf 枚举+并查集
  2. SAS Fuctions
  3. VMware 彻底删除虚拟机操作系统的方法
  4. 命令终端执行python
  5. 运行外部exe
  6. Opencv竟然有中文资料
  7. MySQL-06 数据备份和恢复
  8. ubuntu install zabbix
  9. 打开VS2015提示“重新启动处于挂起状态。请在启动Visual Studio”之前重新启动
  10. JS中的setInterval 函数体带参数f方法