【PHP设计模式 07_ZeRenLian.php】责任链模式
<?php /** * 【责任链模式】 * 情景设置:根据不同的需求,去找相应级别的责任人解决问题 */ header("Content-type: text/html; charset=utf-8"); /* 面向过程的方式解决这个问题 */ if(isset($_POST['type1']) && !empty($_POST['type1'])){ class Cun{ public function process(){ echo '去村委会,找村长解决问题。'; } } class Zhen{ public function process(){ echo '去镇长办公室,找镇长解决问题。'; } } class Xian{ public function process(){ echo '去县里,找县长解决问题'; } } $type = $_POST['type1']; if($type == 1){ $obj = new Cun(); }elseif($type == 2){ $obj = new Zhen(); }elseif($type == 3){ $obj = new Xian(); }else{ exit('错误的选项'); } echo '(面向过程)'; $obj->process(); } /* 责任链模式 解决这个问题 */ if(isset($_POST['type2']) && !empty($_POST['type2'])){ class CunZ{ protected $power = 1; //假设“村长”的能力级别=1 protected $top = 'Zhenz'; //假设“村长”的上级是“ZhenZ” public function process($lev){ //如果匹配则处理,否则去找上一级 if($lev == $this->power){ echo '去村委会,找村长解决问题。'; }else{ $top = new $this->top; $top->process($lev); } } } class Zhenz{ protected $power = 2; //假设“镇长”的能力级别=2 protected $top = 'XianZ'; //假设“镇长”的上级是“XianZ” public function process($lev){ //如果匹配则处理,否则去找上一级 if($lev == $this->power){ echo '去镇长办公室,找镇长解决问题。'; }else{ $top = new $this->top; $top->process($lev); } } } class Xianz{ protected $power = null; protected $top = null; //假设“县长” 暂无上级 public function process($lev){ //因为没有了上级,所以直接处理 echo '去县里,找县长解决问题'; } } $type = $_POST['type2']; $obj = new CunZ(); echo '(责任链)'; $obj->process($type); } ?> <br><br><br><br> <form action="?" method="post"> 【面向过程】 <select name="type1"> <option value="1">家庭纠纷(找村长)</option> <option value="2">土地赔偿(找镇长)</option> <option value="3">户口问题(找县长)</option> </select> <button type="submit">提交</button> </form> <form action="?" method="post"> 【责任链模式】 <select name="type2"> <option value="1">家庭纠纷(找村长)</option> <option value="2">土地赔偿(找镇长)</option> <option value="3">户口问题(找县长)</option> </select> <button type="submit">提交</button> </form>
【PHP设计模式 07_ZeRenLian.php】责任链模式的更多相关文章
- 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)模式的: 责任链模式是一种对象的行为模式.在责任链模式里,很多对象由每一个对象对其 ...
随机推荐
- android网络编程--从网络下载图片,并保存到内存卡
功能1:从网络上取得的图片显示到imageview上面,生成Bitmap时有两种方法,一种是先转换为byte[],再生成bitmap:一种是直接用InputStream生成bitmap.功能2:点击按 ...
- 最流行的PHP 代码规范
“PHP是最好的编程语言” ;-) 那么PHPer习惯使用什么样的代码规范呢?sideeffect.kr通过分析GitHub上托管的开源代码,得出了一些有趣的结果,让我们一起来看看吧. 缩进 空格(7 ...
- nsstring基本数据类型的包装类
// // main.m // 10-基本数据类型的包装类 // // Created by apple on 14-3-20. // Copyright (c) 2014年 apple. A ...
- 记32位程序(使用3gb用户虚拟内存)使用D3DX9导致的一个崩溃的问题
为了增加32位程序的用户虚拟内存的使用量,我们使用了/LARGEADDRESSAWARE编译选项来使32位程序可能使用到3gb的内存,能否使用到3gb内存也跟平台.系统和设置有关系,现摘抄部分作为参考 ...
- WPF 面试题及答案(三)
一 · 路由事件的三种方式/策略(冒泡 直接 隧道) WPF中的路由事件是沿着VisualTree传递的,作用是用来调用应用程序的元素树上的各种监听器上的处理程序. (1)冒泡,这种事件处理方式是从源 ...
- PostgreSQL Replication之第十一章 使用Skytools(2)
11.2 剖析 skytools Skytools 不只是一个单一的脚本,而是一个提供各种不同服务的工具的集合.一旦我们安装了Skytools,更详细地查一下这些组件的细节是有意义的: • londi ...
- SQL 启动服务方法
(1)windows开始菜单->Microsoft SQL Server 2012->配置工具->配置管理器
- [转] HashMap的工作原理
HashMap的工作原理是近年来常见的Java面试题.几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道Hashtable和HashMap之间的区别,那么为何这道面试题如此 ...
- Java基础(45):冒泡排序的Java封装(完整可运行)
1.冒泡排序 package lsg.ap.bubble; import java.util.*; public class BubbleSort { public static void bubbl ...
- C#: MessageBox
系统学习下Form里用到最多的MessageBox MessageBox有21个重载的Show函数...都是返回DialogResult public enum DialogResult { None ...