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 相关文章推荐
global.php
Dec 09 PHP
PHP中的日期处理方法集锦
Jan 02 PHP
mysql From_unixtime及UNIX_TIMESTAMP及DATE_FORMAT日期函数
Mar 21 PHP
第五章 php数组操作
Dec 30 PHP
php 目录遍历、删除 函数的使用介绍
Apr 28 PHP
PHP检测移动设备类mobile detection使用实例
Apr 14 PHP
经典PHP加密解密函数Authcode()修复版代码
Apr 05 PHP
PHP函数checkdnsrr用法详解(Windows平台用法)
Mar 21 PHP
PHP微信开发之微信录音临时转永久存储
Jan 26 PHP
PHP常用的类封装小结【4个工具类】
Jun 28 PHP
tp5.1框架数据库子查询操作实例分析
May 26 PHP
Thinkphp5+Redis实现商品秒杀代码实例讲解
Dec 29 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
用header 发送cookie的php代码
2007/03/16 PHP
jQuery 使用手册(六)
2009/09/23 Javascript
使用jQuery简化Ajax开发 Ajax开发入门
2009/10/14 Javascript
js 获取服务器控件值的代码
2010/03/05 Javascript
根据邮箱的域名跳转到相应的登录页面的代码
2012/02/27 Javascript
12款经典的白富美型—jquery图片轮播插件—前端开发必备
2013/01/08 Javascript
jquery实现checkbox全选全不选的简单实例
2013/12/31 Javascript
js Dialog 去掉右上角的X关闭功能
2014/04/23 Javascript
jQuery表单域选择器用法分析
2015/02/10 Javascript
jquery实现经典的淡入淡出选项卡效果代码
2015/09/22 Javascript
JavaScript DOM 学习总结(五)
2015/11/24 Javascript
JS模仿腾讯图片站的图片翻页按钮效果完整实例
2016/06/21 Javascript
javascript运算符语法全面概述
2016/07/14 Javascript
JS实现动态增加和删除li标签行的实例代码
2016/10/16 Javascript
js 判断数据类型的几种方法
2017/01/13 Javascript
基于对象合并功能的实现示例
2017/10/10 Javascript
jQuery实现滚动效果
2017/11/17 jQuery
JS+CSS实现滚动数字时钟效果
2017/12/25 Javascript
layui实现动态和静态分页
2018/04/28 Javascript
async/await让异步操作同步执行的方法详解
2019/11/01 Javascript
Vue双向数据绑定(MVVM)的原理
2020/10/03 Javascript
原生js+canvas实现验证码
2020/11/29 Javascript
python生成日历实例解析
2014/08/21 Python
浅谈Python 字符串格式化输出(format/printf)
2016/07/21 Python
python实现redis三种cas事务操作
2017/12/19 Python
Python针对给定字符串求解所有子序列是否为回文序列的方法
2018/04/21 Python
详解Python学习之安装pandas
2019/04/16 Python
TFRecord格式存储数据与队列读取实例
2020/01/21 Python
Python Web项目Cherrypy使用方法镜像
2020/11/05 Python
使用css3绘制出各种几何图形
2016/08/17 HTML / CSS
美国新蛋IT数码商城:Newegg.com
2016/07/21 全球购物
WiFi云数码相框:Nixplay
2018/07/05 全球购物
OnePlus加拿大官网:中国国际化手机品牌
2020/10/13 全球购物
应届生保险求职信
2013/11/11 职场文书
平面设计专业大学生职业规划书
2014/03/12 职场文书
个人简历自荐信
2014/06/26 职场文书