php设计模式之命令模式使用示例


Posted in PHP onMarch 02, 2014

命令类:
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&amp;&amp;mysql)二
Oct 09 PHP
php防攻击代码升级版
Dec 29 PHP
PHP SEO优化之URL优化方法
Apr 21 PHP
有关PHP性能优化的介绍
Jun 20 PHP
php单文件版在线代码编辑器
Mar 12 PHP
浅谈PHP中Stream(流)
Jun 08 PHP
详解PHP中的Traits
Jul 29 PHP
使用JavaScript创建新样式表和新样式规则
Jun 14 PHP
比较完整的微信开发php代码
Aug 02 PHP
PHP+mysql+ajax轻量级聊天室实现方法详解
Oct 17 PHP
PHP使用XMLWriter读写xml文件操作详解
Jul 31 PHP
PHP Ajax跨域问题解决方案代码实例
Aug 01 PHP
php接口和抽象类使用示例详解
Mar 02 #PHP
php通过字符串调用函数示例
Mar 02 #PHP
php多维数组去掉重复值示例分享
Mar 02 #PHP
PHP 函数call_user_func和call_user_func_array用法详解
Mar 02 #PHP
PHP 字符串长度判断效率更高的方法
Mar 02 #PHP
PHP static局部静态变量和全局静态变量总结
Mar 02 #PHP
PHP代码优化之成员变量获取速度对比
Feb 28 #PHP
You might like
php/js获取客户端mac地址的实现代码
2013/07/08 PHP
CI使用Tank Auth转移数据库导致密码用户错误的解决办法
2014/06/12 PHP
PHP的PDO操作简单示例
2016/03/30 PHP
PHP微信开发之模板消息回复
2016/06/24 PHP
thinkPHP自动验证机制详解
2016/12/05 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
jQuery EasyUI API 中文文档 - Spinner微调器使用
2011/10/21 Javascript
JS trim去空格的最佳实践
2011/10/30 Javascript
javascript 文件的同步加载与异步加载实现原理
2012/12/13 Javascript
Document.location.href和.replace的区别示例介绍
2014/03/04 Javascript
jquery+html仿翻页相册功能
2016/12/20 Javascript
利用SpringMVC过滤器解决vue跨域请求的问题
2018/02/10 Javascript
详解如何修改 node_modules 里的文件
2020/05/22 Javascript
[00:35]2016完美“圣”典风云人物:冷冷宣传片
2016/12/08 DOTA
[01:09:01]完美世界DOTA2联赛循环赛 Magma vs PXG BO2第一场 10.28
2020/10/28 DOTA
python实现人人网登录示例分享
2014/01/19 Python
Python记录详细调用堆栈日志的方法
2015/05/05 Python
python日志logging模块使用方法分析
2019/05/23 Python
pyqt5之将textBrowser的内容写入txt文档的方法
2019/06/21 Python
python turtle库画一个方格和圆实例
2019/06/27 Python
Python csv模块使用方法代码实例
2019/08/29 Python
Pytorch转onnx、torchscript方式
2020/05/25 Python
Django 构建模板form表单的两种方法
2020/06/14 Python
python如何从键盘获取输入实例
2020/06/18 Python
django 实现后台从富文本提取纯文本
2020/07/02 Python
使用 css3 transform 属性来变换背景图的方法
2019/05/07 HTML / CSS
SQL里面IN比较快还是EXISTS比较快
2012/07/19 面试题
建筑班组长岗位职责
2014/01/02 职场文书
事务机电主管工作职责
2014/02/25 职场文书
档案信息化建设方案
2014/05/16 职场文书
机关作风建设心得体会
2014/10/22 职场文书
2014社区健康教育工作总结
2014/12/16 职场文书
2016年中秋祝酒词
2015/11/26 职场文书
大学生干部培训心得体会
2016/01/06 职场文书
新手开公司创业注意事项有哪些?
2019/07/29 职场文书
带你彻底理解JavaScript中的原型对象
2021/04/14 Javascript