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新手上路(七)
Oct 09 PHP
PHP读取大文件的类SplFileObject使用介绍
Apr 09 PHP
codeigniter中测试通过的分页类示例
Apr 17 PHP
CodeIgniter CLI模式简介
Jun 17 PHP
PHP多个文件上传到服务器实例
Oct 29 PHP
通过php删除xml文档内容的方法
Jan 23 PHP
PHP中返回引用类型的方法
Apr 03 PHP
php PDO异常处理详解
Nov 20 PHP
PHP基于简单递归函数求一个数阶乘的方法示例
Apr 26 PHP
PHP lcfirst()函数定义与用法
Mar 08 PHP
在laravel中实现事务回滚的方法
Oct 10 PHP
tp5框架基于Ajax实现列表无刷新排序功能示例
Feb 10 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侧拉菜单 漂亮,可以向右或者向左展开,支持FF,IE
2009/10/15 PHP
解析如何修改phpmyadmin中的默认登陆超时时间
2013/06/25 PHP
PHP编程基本语法快速入门手册
2016/01/07 PHP
php从数据库读取数据,并以json格式返回数据的方法
2018/08/21 PHP
基于JQuery的cookie插件
2010/04/07 Javascript
举例说明JavaScript中的实例对象与原型对象
2016/03/11 Javascript
js 弹出对话框(遮罩)透明,可拖动的简单实例
2016/07/11 Javascript
bootstrap datetimepicker实现秒钟选择下拉框
2017/01/05 Javascript
基于Angularjs+mybatis实现二级评论系统(仿简书)
2017/02/13 Javascript
详解React Native顶|底部导航使用小技巧
2017/09/14 Javascript
vue router自动判断左右翻页转场动画效果
2017/10/10 Javascript
js根据json数据中的某一个属性来给数据分组的方法
2018/10/08 Javascript
React父子组件间的传值的方法
2018/11/13 Javascript
微信小程序实现文字跑马灯
2020/05/26 Javascript
vue写h5页面的方法总结
2019/02/12 Javascript
js实现蒙版效果
2020/01/11 Javascript
vue跳转页面的几种方法(推荐)
2020/03/26 Javascript
[14:51]DOTA2 HEROS教学视频教你分分钟做大人-卓尔游侠
2014/06/13 DOTA
[50:02]完美世界DOTA2联赛PWL S2 Magma vs FTD 第三场 11.29
2020/12/03 DOTA
Python运行报错UnicodeDecodeError的解决方法
2016/06/07 Python
Python单体模式的几种常见实现方法详解
2017/07/28 Python
python 获取图片分辨率的方法
2019/01/08 Python
Django Admin后台添加数据库视图过程解析
2020/04/01 Python
python“静态”变量、实例变量与本地变量的声明示例
2020/11/13 Python
Python爬虫实例之2021猫眼票房字体加密反爬策略(粗略版)
2021/02/22 Python
美国社交购物市场:MassGenie
2019/02/18 全球购物
倩碧澳大利亚官网:Clinique澳大利亚
2019/07/22 全球购物
蒂娜商店:Tiina the Store
2019/12/07 全球购物
《兰亭集序》教学反思
2014/02/11 职场文书
会计电算化专业自荐信
2014/03/15 职场文书
文明寄语大全
2014/04/11 职场文书
房屋租赁委托书范本
2014/10/04 职场文书
吃空饷专项整治方案
2014/10/27 职场文书
2015年超市员工工作总结
2015/05/04 职场文书
2015年财务科工作总结范文
2015/05/13 职场文书
python opencv检测直线 cv2.HoughLinesP的实现
2021/06/18 Python