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连接数据库代码应用分析
May 29 PHP
修改php.ini不生效问题解决方法(上传大于8M的文件)
Jun 14 PHP
ThinkPHP3.1新特性之动态设置自动完成和自动验证示例
Jun 19 PHP
PHP利用header跳转失效的解决方法
Oct 24 PHP
zend framework中使用memcache的方法
Mar 04 PHP
Zend Framework教程之配置文件application.ini解析
Mar 10 PHP
php mysql procedure实现获取多个结果集的方法【基于thinkPHP】
Nov 09 PHP
PHP登录(ajax提交数据和后台校验)实例分享
Dec 29 PHP
thinkPHP显示不出验证码的原因与解决方法分析
May 20 PHP
[原创]php正则删除html代码中class样式属性的方法
May 24 PHP
PHP实现下载远程图片保存到本地的方法
Jun 19 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
Aug 28 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
判断页面是关闭还是刷新的js代码
2007/01/28 Javascript
HTTP状态代码以及定义(解释)
2007/02/02 Javascript
js textarea自动增高并隐藏滚动条
2009/12/16 Javascript
jQuery之浮动窗口实现代码(两种方法)
2010/09/08 Javascript
jquery实现可拖动DIV自定义保存到数据的实例
2013/11/20 Javascript
js中传递特殊字符(+,&amp;)的方法
2014/01/16 Javascript
两种方法基于jQuery实现IE浏览器兼容placeholder效果
2014/10/14 Javascript
js实现class样式的修改、添加及删除的方法
2015/01/20 Javascript
javascript冒泡排序小结
2016/04/10 Javascript
jQuery基本选择器之标签名选择器
2016/09/03 Javascript
简单理解vue中实例属性vm.$els
2016/12/01 Javascript
JQuery Ajax 异步操作之动态添加节点功能
2017/05/24 jQuery
jQuery鼠标移动图片上实现放大效果
2017/06/25 jQuery
fetch 如何实现请求数据
2018/12/20 Javascript
二种python发送邮件实例讲解(python发邮件附件可以使用email模块实现)
2013/12/03 Python
python冒泡排序简单实现方法
2015/07/09 Python
Python学习笔记整理3之输入输出、python eval函数
2015/12/14 Python
python数据批量写入ScrolledText的优化方法
2018/10/11 Python
Django Celery异步任务队列的实现
2019/07/24 Python
python 使用pdfminer3k 读取PDF文档的例子
2019/08/27 Python
python通过实例讲解反射机制
2019/10/17 Python
python中的split()函数和os.path.split()函数使用详解
2019/12/21 Python
浅谈SciPy中的optimize.minimize实现受限优化问题
2020/02/29 Python
英国综合网上购物商城:The Hut
2018/07/03 全球购物
高中生毕业自我鉴定
2013/10/10 职场文书
中文专业毕业生自荐信
2013/10/28 职场文书
成品仓管员岗位职责
2013/12/11 职场文书
宿舍使用违章电器检讨书
2014/01/12 职场文书
10的分与合教学反思
2014/04/30 职场文书
优秀求职信
2014/05/29 职场文书
主要负责人任命书
2014/06/06 职场文书
正风肃纪剖析材料
2014/09/30 职场文书
2014年导购员工作总结
2014/11/18 职场文书
酒店财务经理岗位职责
2015/04/08 职场文书
2015年保险公司内勤工作总结
2015/05/23 职场文书
Nginx配置https原理及实现过程详解
2021/03/31 Servers