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之真OO
Oct 09 PHP
PHP 得到根目录的 __FILE__ 常量
Jul 23 PHP
php 保留小数点
Apr 21 PHP
PHP高级OOP技术演示
Aug 27 PHP
php中使用Curl、socket、file_get_contents三种方法POST提交数据
Aug 12 PHP
PHP中__FILE__、dirname与basename用法实例分析
Dec 01 PHP
PHP基于工厂模式实现的计算器实例
Jul 16 PHP
php实现xml与json之间的相互转换功能实例
Jul 07 PHP
Yii编程开发常见调用技巧集锦
Jul 15 PHP
Zend Framework框架中实现Ajax的方法示例
Jun 27 PHP
实例分析PHP中PHPMailer发邮件
Dec 13 PHP
Laravel关联模型中过滤结果为空的结果集(has和with区别)
Oct 18 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 读取和修改大文件的某行内容的代码
2009/10/30 PHP
PHP屏蔽过滤指定关键字的方法
2014/11/03 PHP
php中time()与$_SERVER[REQUEST_TIME]用法区别
2014/11/19 PHP
PHP数组操作实例分析【添加,删除,计算,反转,排序,查找等】
2016/12/24 PHP
visual studio code 调试php方法(图文详解)
2017/09/15 PHP
基于php流程控制语句和循环控制语句(讲解)
2017/10/23 PHP
php使用curl获取header检测开启GZip压缩的方法
2018/08/15 PHP
jquery.boxy插件的iframe扩展代码
2010/07/02 Javascript
node.js+Ajax实现获取HTTP服务器返回数据
2014/11/26 Javascript
js动态切换图片的方法
2015/01/20 Javascript
用户代理字符串userAgent可实现的四个识别
2015/09/20 Javascript
详解nodejs 文本操作模块-fs模块(一)
2016/12/22 NodeJs
AngularJS的依赖注入实例分析(使用module和injector)
2017/01/19 Javascript
微信小程序 弹幕功能简单实例
2017/02/14 Javascript
jQuery插件HighCharts绘制2D圆环图效果示例【附demo源码下载】
2017/03/09 Javascript
详解wow.js中各种特效对应的类名
2017/09/13 Javascript
详解Vue组件之间通信的七种方式
2019/04/14 Javascript
JS中队列和双端队列实现及应用详解
2020/09/29 Javascript
python基础教程之字典操作详解
2014/03/25 Python
Python open()文件处理使用介绍
2014/11/30 Python
使用IPython下的Net-SNMP来管理类UNIX系统的教程
2015/04/15 Python
python基于BeautifulSoup实现抓取网页指定内容的方法
2015/07/09 Python
hmac模块生成加入了密钥的消息摘要详解
2018/01/11 Python
python OpenCV学习笔记之绘制直方图的方法
2018/02/08 Python
用pycharm开发django项目示例代码
2018/10/24 Python
wxPython实现画图板
2020/08/27 Python
使用Tensorflow实现可视化中间层和卷积层
2020/01/24 Python
python用分数表示矩阵的方法实例
2021/01/11 Python
世界上最大的乐器零售商:Guitar Center
2017/11/07 全球购物
岗位工作说明书
2014/07/29 职场文书
争先创优演讲稿
2014/09/15 职场文书
JS + HTML 罗盘式时钟的实现
2021/05/21 Javascript
日元符号 ¥
2022/02/17 杂记
Spring Bean是如何初始化的详解
2022/03/22 Java/Android
三种方式清除vue路由跳转router-link的历史记录
2022/04/10 Vue.js
MySQL提取JSON字段数据实现查询
2022/04/22 MySQL