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 相关文章推荐
深入解析php模板技术原理【一】
Jan 10 PHP
PHP编实现程动态图像的创建代码
Sep 28 PHP
请离开include_once和require_once
Jul 18 PHP
使用swoole扩展php websocket示例
Feb 13 PHP
JavaScript创建命名空间的5种写法
Jun 24 PHP
简单谈谈php中ob_flush和flush的区别
Nov 27 PHP
smarty简单应用实例
Nov 03 PHP
PHP实现查询两个数组中不同元素的方法
Feb 23 PHP
遍历echsop的region表形成缓存的程序实例代码
Nov 01 PHP
php 一维数组的循环遍历实现代码
Apr 10 PHP
PHP框架自动加载类文件原理详解
Jun 06 PHP
ThinkPHP+EasyUI之ComboTree中的会计科目树形菜单实现方法
Jun 09 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中的一个中文字符串截取函数
2007/02/14 PHP
Yii2.0 模态弹出框+ajax提交表单
2016/05/22 PHP
JavaScript 创建对象和构造类实现代码
2009/07/30 Javascript
jquery 经典动画菜单效果代码
2010/01/26 Javascript
jQuery的3种请求方式$.post,$.get,$.getJSON
2014/03/28 Javascript
一个简单的Node.js异步操作管理器分享
2014/04/29 Javascript
javascript正则表达式参数/g与/i及/gi的使用指南
2014/08/27 Javascript
js实现方块上下左右移动效果
2017/08/17 Javascript
如何去除vue项目中的#及其ie9兼容性
2018/01/11 Javascript
微信小程序实现天气预报功能
2018/07/18 Javascript
JavaScript数组特性与实践应用深入详解
2018/12/30 Javascript
package.json配置文件构成详解
2019/08/27 Javascript
javascript刷新父页面方法汇总详解
2019/10/10 Javascript
解决vue cli4升级sass-loader(v8)后报错问题
2020/07/30 Javascript
[40:53]完美世界DOTA2联赛PWL S3 Magma vs DLG 第二场 12.18
2020/12/20 DOTA
python定时采集摄像头图像上传ftp服务器功能实现
2013/12/23 Python
使用python装饰器计算函数运行时间的实例
2018/04/21 Python
python读文件保存到字典,修改字典并写入新文件的实例
2018/04/23 Python
python3.6.3转化为win-exe文件发布的方法
2018/10/31 Python
python通过文本在一个图中画多条线的实例
2020/02/21 Python
python中取绝对值简单方法总结
2020/07/24 Python
Python+OpenCV检测灯光亮点的实现方法
2020/11/02 Python
HTML5 device access 设备访问详解
2018/05/24 HTML / CSS
意大利奢侈品购物网站:Deliberti
2019/10/08 全球购物
乌克兰网上珠宝商店:GoldSoveren
2020/03/31 全球购物
三个Unix的命令面试题
2015/04/12 面试题
终端业务员岗位职责
2013/11/27 职场文书
公司财务自我评价分享
2013/12/17 职场文书
企业消防安全制度
2014/02/02 职场文书
社团活动总结
2014/04/28 职场文书
根叔历年演讲稿
2014/05/20 职场文书
2014年党支部承诺书
2014/05/30 职场文书
党员查摆四风问题思想汇报
2014/10/25 职场文书
爱的教育观后感
2015/06/17 职场文书
2016秋季田径运动会广播稿
2015/12/21 职场文书
PyQt5 QThread倒计时功能的实现代码
2021/04/02 Python