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 相关文章推荐
php4的session功能评述(三)
Oct 09 PHP
php表单转换textarea换行符的方法
Sep 10 PHP
Zend Studio 实用快捷键一览表(精心整理)
Aug 10 PHP
PHP学习笔记(二) 了解PHP的基本语法以及目录结构
Aug 04 PHP
php实现encode64编码类实例
Mar 24 PHP
php筛选不存在的图片资源
Apr 28 PHP
Linux系统中设置多版本PHP共存配合Nginx服务器使用
Dec 21 PHP
Composer设置忽略版本匹配的方法
Apr 27 PHP
thinkphp框架下404页面设置 仅三步
May 14 PHP
php处理json格式数据经典案例总结
May 19 PHP
php使用ftp远程上传文件类(完美解决主从文件同步问题的方法)
Sep 23 PHP
简单的php购物车代码
Jun 05 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跨时区(UTC时间)应用解决方案
2013/01/11 PHP
简单说说PHP优化那些事(经验分享)
2014/11/27 PHP
PHP GD库相关图像生成和处理函数小结
2016/09/30 PHP
yii2 数据库读写分离配置示例
2017/02/10 PHP
laravel Model 执行事务的实现
2019/10/10 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
2019/11/21 PHP
[全兼容哦]--实用、简洁、炫酷的页面转入效果loing
2007/05/07 Javascript
Javascript注入技巧
2007/06/22 Javascript
setTimeout函数兼容各主流浏览器运行执行效果实例
2013/06/13 Javascript
JS+CSS实现可以凹陷显示选中单元格的方法
2015/03/02 Javascript
JavaScript实现将UPC转换成ISBN的方法
2015/05/26 Javascript
JavaScript实现节点的删除与序号重建实例
2015/08/05 Javascript
jQuery简单实现title提示效果示例
2016/08/01 Javascript
JavaScript中this的用法实例分析
2016/12/19 Javascript
JS高级运动实例分析
2016/12/20 Javascript
vue双向绑定的简单实现
2016/12/22 Javascript
js实现数组内数据的上移和下移的实例
2017/11/14 Javascript
解决vue+webpack打包路径的问题
2018/03/06 Javascript
原生js实现随机点餐效果
2019/12/10 Javascript
如何利用javascript接收json信息并进行处理
2020/08/06 Javascript
[01:15:44]首部DOTA2纪录片今日23时全网上映
2014/03/19 DOTA
[01:10:49]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
本地文件上传到七牛云服务器示例(七牛云存储)
2014/01/11 Python
python更新列表的方法
2015/07/28 Python
Python中import导入上一级目录模块及循环import问题的解决
2016/06/04 Python
Python的mysql数据库的更新如何实现
2017/07/31 Python
python+tkinter编写电脑桌面放大镜程序实例代码
2018/01/16 Python
Python BeautifulSoup [解决方法] TypeError: list indices must be integers or slices, not str
2019/08/07 Python
Python MOCK SERVER moco模拟接口测试过程解析
2020/04/13 Python
Spring http服务远程调用实现过程解析
2020/06/11 Python
aden + anais官方网站:婴儿襁褓、毯子、尿布和服装
2017/06/21 全球购物
毕业生个人投资创业计划书
2014/01/04 职场文书
导游词之苏州盘门景区
2019/11/12 职场文书
Nginx下配置Https证书详细过程
2021/04/01 Servers
MongoDB balancer的使用详解
2021/04/30 MongoDB
永中文档在线转换预览基于nginx配置部署方案
2022/06/10 Servers