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第一季视频教程(李炎恢+php100 不断更新)
May 29 PHP
php添加文章时生成静态HTML文章的实现代码
Feb 17 PHP
ThinkPHP3.1查询语言详解
Jun 19 PHP
php过滤HTML标签、属性等正则表达式汇总
Sep 22 PHP
安装ImageMagick出现error while loading shared libraries的解决方法
Sep 23 PHP
php中try catch捕获异常实例详解
Nov 21 PHP
通过php删除xml文档内容的方法
Jan 23 PHP
微信支付开发告警通知实例
Jul 12 PHP
PHP调试及性能分析工具Xdebug详解
Feb 09 PHP
php实现微信企业号支付个人的方法详解
Jul 26 PHP
PHP PDOStatement::getAttribute讲解
Feb 01 PHP
PHP设计模式之抽象工厂模式实例分析
Mar 25 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 disk_free_space 返回目录可用空间
2010/05/10 PHP
PHP写日志的实现方法
2014/11/05 PHP
PHP编写学校网站上新生注册登陆程序的实例分享
2016/03/21 PHP
PHP简单实现生成txt文件到指定目录的方法
2016/04/25 PHP
CentOS下搭建PHP环境与WordPress博客程序的全流程总结
2016/05/07 PHP
php安装php_rar扩展实现rar文件读取和解压的方法
2016/11/17 PHP
Linux下快速搭建php开发环境
2017/03/13 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
2017/07/26 PHP
购物车实现的几种方式优缺点对比
2018/05/02 PHP
通过Javascript将数据导出到外部Excel文档的函数代码
2012/06/15 Javascript
Jquery中Event对象属性小结
2015/02/27 Javascript
AngularJS页面访问时出现页面闪烁问题的解决
2016/03/06 Javascript
解析JavaScript面向对象概念中的Object类型与作用域
2016/05/10 Javascript
超实用的JavaScript代码段 附使用方法
2016/05/22 Javascript
javascript实现无法关闭的弹框
2016/11/27 Javascript
使用JS和canvas实现gif动图的停止和播放代码
2017/09/01 Javascript
Web开发使用Angular实现用户密码强度判别的方法
2017/09/27 Javascript
Vue 父子组件数据传递的四种方式( inheritAttrs + $attrs + $listeners)
2018/05/04 Javascript
Element输入框带历史查询记录的实现示例
2019/01/15 Javascript
vueScroll实现移动端下拉刷新、上拉加载
2019/03/22 Javascript
keep-alive不能缓存多层级路由菜单问题解决
2020/03/10 Javascript
[01:47]2018年度DOTA2最具人气解说-完美盛典
2018/12/16 DOTA
python实现颜色空间转换程序(Tkinter)
2015/12/31 Python
Python入门教程之运算符与控制流
2016/08/17 Python
Django添加sitemap的方法示例
2018/08/06 Python
Python Socketserver实现FTP文件上传下载代码实例
2020/03/27 Python
统计员岗位职责
2013/11/14 职场文书
生物科学专业个人求职信范文
2013/12/07 职场文书
《梅兰芳学艺》教学反思
2014/02/24 职场文书
雷锋精神演讲稿
2014/05/13 职场文书
遵纪守法演讲稿
2014/05/23 职场文书
幼儿教师求职信
2014/05/24 职场文书
总经理任命书范本
2014/06/05 职场文书
2014最新毕业证代领委托书
2014/09/26 职场文书
小学教师节活动总结
2015/03/20 职场文书
swagger如何返回map字段注释
2021/07/03 Java/Android