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个人网站架设连环讲(三)
Oct 09 PHP
PHP高级对象构建 多个构造函数的使用
Feb 05 PHP
PHP ignore_user_abort函数详细介绍和使用实例
Jul 15 PHP
Smarty环境配置与使用入门教程
May 11 PHP
Thinkphp连表查询及数据导出方法示例
Oct 15 PHP
利用php实现一周之内自动登录存储机制(cookie、session、localStorage)
Oct 31 PHP
PHP实现的回溯算法示例
Aug 15 PHP
PHP常用字符串函数小结(推荐)
Aug 05 PHP
PHP开发的文字水印,缩略图,图片水印实现类与用法示例
Apr 12 PHP
Laravel第三方包报class not found的解决方法
Oct 13 PHP
Yii框架模拟组件调用注入示例
Nov 11 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
Mar 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猴子选大王问题解决方法
2015/05/12 PHP
php实现微信支付之企业付款
2018/05/30 PHP
用JS将搜索的关键字高亮显示实现代码
2013/11/08 Javascript
jQuery实现根据类型自动显示和隐藏表单
2015/03/18 Javascript
javascript实现图片上传前台页面
2015/08/18 Javascript
深入理解js函数的作用域与this指向
2016/05/28 Javascript
JS中innerHTML和pasteHTML的区别实例分析
2016/06/22 Javascript
JS表格组件BootstrapTable行内编辑解决方案x-editable
2016/09/01 Javascript
bootstrap table小案例
2016/10/21 Javascript
jQuery插件FusionWidgets实现的Cylinder图效果示例【附demo源码】
2017/03/23 jQuery
js轮播图的插件化封装详解
2017/07/17 Javascript
微信小程序url与token设置详解
2017/09/26 Javascript
vue路由教程之静态路由
2019/09/03 Javascript
[01:02]DOTA2上海特锦赛SHOWOPEN
2016/03/25 DOTA
在Python的Django框架中调用方法和处理无效变量
2015/07/15 Python
Python多进程同步简单实现代码
2016/04/27 Python
Pandas DataFrame 取一行数据会得到Series的方法
2018/11/10 Python
Python 最大概率法进行汉语切分的方法
2018/12/14 Python
Python可视化工具如何实现动态图表
2020/10/23 Python
详解如何用canvas画一个微笑的表情
2019/03/14 HTML / CSS
英国翻新电子产品购物网站:Tech Trade
2017/12/25 全球购物
美国迪克体育用品商店:DICK’S Sporting Goods
2018/07/24 全球购物
西班牙土拨鼠床垫公司,感觉在云端:Marmota
2019/03/18 全球购物
小蚁科技官方商店:YI Technology
2019/08/23 全球购物
Hotels.com泰国:酒店预订网站
2019/11/20 全球购物
日本化妆品植村秀俄罗斯官方网站:Shu Uemura俄罗斯
2020/02/01 全球购物
main 主函数执行完毕后,是否可能会再执行一段代码,给出说明
2012/12/05 面试题
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
2014/07/27 面试题
小学教师学期末自我评价
2013/09/25 职场文书
信用社员工先进事迹材料
2014/02/04 职场文书
护士求职信
2014/07/05 职场文书
2014年物资管理工作总结
2014/12/02 职场文书
二年级语文上册复习计划
2015/01/19 职场文书
浅谈自定义校验注解ConstraintValidator
2021/06/30 Java/Android
nginx的zabbix 5.0安装部署的方法步骤
2021/07/16 Servers
MySQL8.0的WITH查询详情
2021/08/30 MySQL