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 相关文章推荐
php4的session功能评述(二)
Oct 09 PHP
通俗易懂的php防注入代码
Apr 07 PHP
PHP字符串处理的10个简单方法
Jun 30 PHP
深入理解php的MySQL连接类
Jun 07 PHP
深入PHP FTP类的详解
Jun 13 PHP
PHP-FPM之Chroot执行环境详解
Aug 03 PHP
PHP Curl模拟登录微信公众平台、新浪微博实例代码
Jan 28 PHP
Zend Framework+smarty用法实例详解
Mar 19 PHP
静态html文件执行php语句的方法(推荐)
Nov 21 PHP
详解PHP处理密码的几种方式
Nov 30 PHP
php7下的filesize函数
Sep 30 PHP
TP5框架实现上传多张图片的方法分析
Mar 29 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 中文处理技巧
2010/04/25 PHP
UCenter中的一个可逆加密函数authcode函数代码
2010/07/20 PHP
PHP中如何定义和使用常量
2013/02/28 PHP
php发送get、post请求的6种方法简明总结
2014/07/08 PHP
Laravel 5框架学习之Eloquent (laravel 的ORM)
2015/04/08 PHP
Javascript实例教程(19) 使用HoTMetal(5)
2006/12/23 Javascript
用js统计用户下载网页所需时间的脚本
2008/10/15 Javascript
异步加载script的代码
2011/01/12 Javascript
Javascript获取HTML静态页面参数传递值示例
2013/08/18 Javascript
表单元素与非表单元素刷新区别详细解析
2013/11/06 Javascript
使用javascript为网页增加夜间模式
2014/01/26 Javascript
15个jquery常用方法、小技巧分享
2015/01/13 Javascript
jQuery使用fadein方法实现渐出效果实例
2015/03/27 Javascript
JavaScript中数组的合并以及排序实现示例
2015/10/24 Javascript
vue组件表单数据回显验证及提交的实例代码
2018/08/30 Javascript
[09:47]2018DOTA2亚洲邀请赛4.5SOLO赛 No[o]ne vs Sumail
2018/04/06 DOTA
python检查序列seq是否含有aset中项的方法
2015/06/30 Python
python实现ID3决策树算法
2017/12/20 Python
python pandas dataframe 按列或者按行合并的方法
2018/04/12 Python
TensorFlow实现Logistic回归
2018/09/07 Python
Python搭建代理IP池实现获取IP的方法
2019/10/27 Python
Pytorch模型转onnx模型实例
2020/01/15 Python
Django中的session用法详解
2020/03/09 Python
Python unittest框架操作实例解析
2020/04/13 Python
Python request中文乱码问题解决方案
2020/09/17 Python
python实现三种随机请求头方式
2021/01/05 Python
CSS3模拟IOS滑动开关效果
2016/09/28 HTML / CSS
函授大专自我鉴定
2013/11/01 职场文书
简历中的自我评价怎么写
2014/01/29 职场文书
工厂会计员职责
2014/02/06 职场文书
给老婆的保证书范文
2014/04/28 职场文书
单位委托书
2014/10/15 职场文书
红与黑读书笔记
2015/06/29 职场文书
财务管理制度范本
2015/08/04 职场文书
CSS3实现三角形不断放大效果
2021/04/13 HTML / CSS
如何在CocosCreator里画个炫酷的雷达图
2021/04/16 Javascript