php设计模式之命令模式的应用详解


Posted in PHP onMay 21, 2013

命令模式:将一个请求封装为一个对象,从而你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销操作。
命令类:
1.命令角色:声明了一个给所有具体命令类的抽象接口。这是一个抽象角色。
2.具体命令角色:定义一个接受者和行为之间的弱耦合;实现execute方法,负责调用接受的相应操作。execute()方法通常叫做执行方法
3.客户角色:创建一个具体命令对象并确定其接受者。
4.请求者角色:负责调用命令对象执行请求,相关的方法叫做行动方法。
5.接受者角色:负责具体实施和执行一个请求。
作用:
1.抽象出待执行的动作以参数化对象。
2.在不同的时刻指定、排列和执行请求。
3.支持取消操作
4.支持修改日志

<?php
//命令接口
interface Command{
     public function execute();
}
//具体命令
class ConcreteCommand implements Command{
     private $_receiver;
     public function __construct($receiver){
          $this->_receiver = $receiver;
     }
     public function execute(){
          $this->_receiver->action();
     }
}//接受者
class Receiver{
     private $_name;
     public function __construct($name){
          $this->_name = $name;
     }
     //行动方法
     public function action(){
          echo $this->_name.'do action .<br/>';
     }
}
//请求者
class Invoker{
     private $_command;
     public function __construct($command){
          $this->_command = $command;
     }
     public function action(){
          $this->_command->execute();
     }
}
//客户端
class  Client{
     public static function main(){
          $receiver = new Receiver('jaky');
          $command = new ConcreteeCommand($receiver);
          $invoker = new Invoker($command);
          $invoker->action();
     }
}
Client::main();
?>
PHP 相关文章推荐
用php实现像JSP,ASP里Application那样的全局变量
Jan 12 PHP
PHP XML数据解析代码
May 26 PHP
解析php入库和出库
Jun 25 PHP
CURL状态码列表(详细)
Jun 27 PHP
yii中widget的用法
Dec 03 PHP
PHP框架Laravel的小技巧两则
Feb 10 PHP
PHP使用JSON和将json还原成数组
Feb 12 PHP
php常用正则函数实例小结
Dec 29 PHP
phpstudy默认不支持64位php的解决方法
Feb 20 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
Nov 16 PHP
Laravel框架查询构造器简单示例
May 08 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
Dec 01 PHP
浅谈PHP与C#的值类型指向区别的详解
May 21 #PHP
PHP无法访问远程mysql的问题分析及解决
May 16 #PHP
基于PHP字符串的比较函数strcmp()与strcasecmp()的使用详解
May 15 #PHP
解析dedecms空间迁移步骤详解
May 15 #PHP
基于php缓存的详解
May 15 #PHP
解析php中mysql_connect与mysql_pconncet的区别详解
May 15 #PHP
深入php之规范编程命名小结
May 15 #PHP
You might like
PHP面向对象编程快速入门
2006/12/14 PHP
超小PHP小马小结(方便查找后门的朋友)
2012/05/05 PHP
解析关于wamp启动是80端口被占用的问题
2013/06/21 PHP
jQuery中的RadioButton,input,CheckBox取值赋值实现代码
2014/02/18 PHP
PHP使用反射机制实现查找类和方法的所在位置
2016/04/22 PHP
PHP自定义错误用法示例
2016/09/28 PHP
Thinkphp5+plupload实现的图片上传功能示例【支持实时预览】
2019/05/08 PHP
js querySelector和getElementById通过id获取元素的区别
2012/04/20 Javascript
Jquery Post处理后不进入回调的原因及解决方法
2014/07/15 Javascript
Listloading.js移动端上拉下拉刷新组件
2016/08/04 Javascript
js复制内容到剪贴板代码,js复制代码的简单实例
2016/10/27 Javascript
Bootstrap中data-target 到底是什么
2017/02/14 Javascript
Javascript仿京东放大镜的效果
2017/03/01 Javascript
微信小程序实现倒计时60s获取验证码
2020/04/17 Javascript
vue中组件的过渡动画及实现代码
2018/11/21 Javascript
你可能不知道的CORS跨域资源共享
2019/03/13 Javascript
如何在 Vue 中使用 JSX
2021/02/14 Vue.js
多线程爬虫批量下载pcgame图片url 保存为xml的实现代码
2013/01/17 Python
Python中Iterator迭代器的使用杂谈
2016/06/20 Python
python使用正则表达式替换匹配成功的组并输出替换的次数
2017/11/22 Python
python匿名函数lambda原理及实例解析
2020/02/07 Python
Data URI scheme详解和使用实例及图片base64编码实现方法
2014/05/08 HTML / CSS
如何使用canvas绘制可移动网格的示例代码
2020/12/14 HTML / CSS
德国自然时尚和有机产品购物网站:Waschbär
2019/05/29 全球购物
华为的Java面试题
2014/03/07 面试题
企业内部培训方案
2014/02/04 职场文书
安全标准化实施方案
2014/02/20 职场文书
安全在我心中演讲稿
2014/09/01 职场文书
2014年实习期工作总结
2014/11/27 职场文书
安全检查汇报材料
2014/12/26 职场文书
2015年入党积极分子评语
2015/03/26 职场文书
二婚主持词
2015/06/30 职场文书
美德少年事迹材料(2016推荐版)
2016/02/25 职场文书
MySQL下使用Inplace和Online方式创建索引的教程
2021/05/26 MySQL
详解Laravel制作API接口
2021/05/31 PHP
如何避免mysql启动时错误及sock文件作用分析
2022/01/22 MySQL