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 相关文章推荐
Breeze 文章管理系统 v1.0.0正式发布
Dec 14 PHP
fleaphp下不确定的多条件查询的巧妙解决方法
Sep 11 PHP
纯php打造的tab选项卡效果代码(不用js)
Dec 29 PHP
php中使用接口实现工厂设计模式的代码
Jun 17 PHP
调试PHP程序的多种方法介绍
Nov 06 PHP
PHP Smarty模版简单使用方法
Mar 30 PHP
PHP引用返回用法示例
May 28 PHP
PHP打印输出函数汇总
Aug 28 PHP
PHP入门教程之字符串处理技巧总结(转换,过滤,解析,查找,截取,替换等)
Sep 11 PHP
如何直接访问php实例对象中的private属性详解
Oct 12 PHP
Laravel5.5 实现后台管理登录的方法(自定义用户表登录)
Sep 30 PHP
关于laravel框架中的常用目录路径函数
Oct 23 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除数取整示例
2014/04/24 PHP
WordPress特定文章对搜索引擎隐藏或只允许搜索引擎查看
2015/12/31 PHP
浅谈PHP命令执行php文件需要注意的问题
2016/12/16 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
2020/03/26 PHP
在IE,Firefox,Safari,Chrome,Opera浏览器上调试javascript
2008/12/02 Javascript
Jquery Ajax学习实例6 向WebService发出请求,返回DataSet(XML) 异步调用
2010/03/18 Javascript
Jquery性能优化详解
2014/05/15 Javascript
jQuery.parseJSON(json)将JSON字符串转换成js对象
2014/07/27 Javascript
JavaScript制作简易的微信打飞机
2015/03/31 Javascript
location.hash保存页面状态的技巧
2016/04/28 Javascript
BootStrap实现响应式布局导航栏折叠隐藏效果(在小屏幕、手机屏幕浏览时自动折叠隐藏)
2016/11/30 Javascript
bootstrap实现每隔5秒自动轮播效果
2016/12/20 Javascript
Node.js操作redis实现添加查询功能
2017/05/25 Javascript
canvas+gif.js打造自己的数字雨头像的示例代码
2017/10/26 Javascript
微信小程序 生成携带参数的二维码
2019/10/23 Javascript
webpack是如何实现模块化加载的方法
2019/11/06 Javascript
jquery实现两个div中的元素相互拖动的方法分析
2020/04/05 jQuery
利用Python的Twisted框架实现webshell密码扫描器的教程
2015/04/16 Python
python paramiko模块学习分享
2017/08/23 Python
python使用turtle库绘制树
2018/06/25 Python
python运行时强制刷新缓冲区的方法
2019/01/14 Python
Python OpenCV中的resize()函数的使用
2019/06/20 Python
Python测试模块doctest使用解析
2019/08/10 Python
Python处理PDF与CDF实例
2020/02/26 Python
tensorflow转换ckpt为savermodel模型的实现
2020/05/25 Python
奥地利时尚、美容、玩具和家居之家:Kastner & Öhler
2020/04/26 全球购物
英国豪华家具和经典家居饰品购物网站:OKA
2020/06/05 全球购物
亲子活动总结
2014/04/26 职场文书
导游欢迎词范文
2015/01/23 职场文书
个人年终总结结尾
2015/03/06 职场文书
求职推荐信范文
2015/03/27 职场文书
汽车4S店前台接待岗位职责
2015/04/03 职场文书
新闻简讯格式及范文
2015/07/22 职场文书
Python实现简繁体转换
2021/06/07 Python
ROS系统将python包编译为可执行文件的简单步骤
2021/07/25 Python
vue ref如何获取子组件属性值
2022/03/31 Vue.js