php设计模式课程---5、责任链模式是什么
php设计模式课程---5、责任链模式是什么
一、总结
一句话总结:
自己权限不够,就交给上级处理
1、选择结构怎么做到面向对象开闭原则?
也就是说if,都可以用接口的实现来实现,这样就避免了更新的时候修改原来代码,这就是抽象工厂。
2、责任链模式怎么实现?
就是一条链,链上的人权限逐级变大,事情被最低权限的人发现,如果权限够处理,就处理,不够就交给上一级
代码实现的话就是有个基类,然后每种权限的人继承这个基类就可以了,实现里面的方法
3、php中如何从类的属性值变到方法?
属性加了圆括号变成了方法:$this->toper = new $this->top();//属性加了圆括号变成了方法(属性值->值->方法),比如$this->top可以是Police
4、从选择结构的责任链模式到继承类的责任链模式经历了什么?
选择模式的多种情况选择变成了类的逐级判断
5、责任链模式中,最开始发现事情的是哪一级?
总是最低级
6、责任链模式中,每个人的属性有哪些?
权限值
上级(对象名)
二、责任链模式是什么
1、相关知识
2、代码
<?php
class Admin {
public function __construct() {
if($this->top === null) {
return;
}
$this->toper = new $this->top();//属性加了圆括号变成了方法(属性值->值->方法)
} public function proc($danger) {
if($danger <= $this->power) { //如果权限能解决,就解决,这里也不会出现大权限解决小问题,因为我们是从最低级的版主一层层往上走的
$this->doProc();
} else {
$this->toper->proc($danger);
}
}
} class Banzhu extends Admin {
protected $power = 1;
protected $top = 'Police'; protected function doProc() {
echo '删帖';
}
} class Police extends Admin {
protected $power = 2;
protected $top = 'Guoan'; public function doProc() {
echo '抓人';
}
} class Guoan extends Admin {
protected $power = 3;
protected $top = null; public function doProc() {
echo '灭口';
}
} $danger = 3; $admin = new Banzhu(); //不合适的帖子肯定是版主最先发现,所以这里是new的版主
$admin->proc($danger); print_r($admin);
带选择结构的责任链
<?php
/**
布尔教育: http://www.itbool.com
课后论坛: http://www.zixue.it
**/ /*
// 讲坛,举报
....
....
[举报] : 粗口 黄赌毒 反政府
: 版主 警察 国安
*/ class Banzhu {
protected $power = 1;
public function proc() {
echo '删帖';
}
} class Police {
protected $power = 2;
public function proc() {
echo '抓人';
}
} class Guoan{
protected $power = 3;
public function proc() {
echo '灭口';
}
} $jb = $_POST['jubao'] = 2; if($jb == 1) {
$admin = new Banzhu();
} else if($jb = 2) {
$admin = new Police();
} else if($jb = 3) {
$admin = new Guoan();
} $admin->proc(); ?>
php设计模式课程---5、责任链模式是什么的更多相关文章
- Python使用设计模式中的责任链模式与迭代器模式的示例
Python使用设计模式中的责任链模式与迭代器模式的示例 这篇文章主要介绍了Python使用设计模式中的责任链模式与迭代器模式的示例,责任链模式与迭代器模式都可以被看作为行为型的设计模式,需要的朋友可 ...
- Java设计模式学习记录-责任链模式
前言 已经把五个创建型设计模式和七个结构型设计模式介绍完了,从这篇开始要介绍行为型设计模式了,第一个要介绍的行为型设计模式就是责任链模式(又称职责链模式). 责任链模式 概念介绍 责任链模式是为了避免 ...
- 《java设计模式》之责任链模式
在阎宏博士的<JAVA与模式>一书中开头是这样描述责任链(Chain of Responsibility)模式的: 责任链模式是一种对象的行为模式.在责任链模式里,很多对象由每一个对象对其 ...
- 重学 Java 设计模式:实战责任链模式「模拟618电商大促期间,项目上线流程多级负责人审批场景」
作者:小傅哥 博客:https://bugstack.cn - 原创系列专题文章 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 场地和场景的重要性 射击
- [设计模式] javascript 之 责任链模式
责任链模式:定义 责任链接模式又称职责链模式,是一种对象的行为模式:它是一种链式结构,每个节点都有可能两种操作,要么处理该请求停止该请求操作,要么把请求转发到下一个节点,让下一个节点来处理请求:该模式 ...
- Java设计模式系列之责任链模式
责任链模式 责任链模式是一种对象的行为模式.在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链.请求在这个链上传递,直到链上的某一个对象决定处理此请求.发出这个请求的客户端并不知道 ...
- 设计模式学习之责任链模式(Chain of Responsibility,行为型模式)(22)
参考:http://www.cnblogs.com/zhili/p/ChainOfResponsibity.html 一.引言 在现实生活中,有很多请求并不是一个人说了就算的,例如面试时的工资,低于1 ...
- Java描述设计模式(15):责任链模式
本文源码:GitHub·点这里 || GitEE·点这里 一.生活场景描述 1.请假审批流程 公司常见的请假审批流程:请假天数 当 day<=3 天,项目经理审批 当 3<day<= ...
- Java设计模式13:责任链模式
前言 来菜鸟这个大家庭10个月了,总得来说比较融入了环境,同时在忙碌的工作中也深感技术积累不够,在优秀的人身边工作必须更加花时间去提升自己的技术能力.技术视野,所以开一个系列文章,标题就轻松一点叫做最 ...
- 《JAVA设计模式》之责任链模式(Chain of Responsibility)
在阎宏博士的<JAVA与模式>一书中开头是这样描述责任链(Chain of Responsibility)模式的: 责任链模式是一种对象的行为模式.在责任链模式里,很多对象由每一个对象对其 ...
随机推荐
- 转:css:Position
http://www.cnblogs.com/polk6/archive/2013/07/26/3214847.html http://blog.sina.com.cn/s/blog_4bcf4a5e ...
- Ubuntu下载、zsync、安装、常见问题
下载-镜像地址 http://mirrors.ustc.edu.cn/ubuntu-releases/ http://mirrors.163.com/ubuntu-releases/ Ubuntu 更 ...
- Oracle 修改字段注释
修改字段注释SQL: COMMENT ON COLUMN 表名.字段名 IS '注释内容'; 批量修改所有表的字段注释,这里是修改所有没有注释的字段 附件: 实现步骤: ...
- Bootstrp--一个导航面板切换的实用例子
<!--导航区开始--> <ul class="nav nav-tabs nav-stacked" role="tablist"> &l ...
- intellij 开发webservice
最近项目中有用到WebService,于是就研究了一下,但是关于intellij 开发 WebService 的文章极少,要不就是多年以前,于是研究一下,写这篇博文.纯属记录,分享,中间有不对的地方, ...
- Qt QImageReader 相似乎有bug
Qt 版本号 5.4.1 (VS2010) 近期在做一个小程序,事实上非常easy,就是打开一个gif 动画.能够静态显示当中随意一帧图像.Qt 中有一个QImageReader 类.用这个类理论上说 ...
- JavaWeb、J2-SE开发框架——Spring
相关博客: 2.spring官网 1.使用Spring的jdbcTemplate进一步简化JDBC操作
- WCF服务返回XML或JSON格式数据
第一种方式public string GetData( string format) { string res = null; Student stu = new Student { StuID = ...
- IOS数组按中文关键字以字母序排序
本文转载至 http://blog.csdn.net/xunyn/article/details/7882087 iosobjective cuser框架通讯 IOS项目中会用到对通讯录的联系人或是会 ...
- 3720: Gty的妹子树
3720: Gty的妹子树 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1440 Solved: 482[Submit][Status][Disc ...