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获取bing每日壁纸示例分享
Feb 25 PHP
使用php清除bom示例
Mar 03 PHP
PHP函数addslashes和mysql_real_escape_string的区别
Apr 22 PHP
Zend Framework入门知识点小结
Mar 19 PHP
php中使用GD库做验证码
Mar 31 PHP
php构造方法中析构方法在继承中的表现
Apr 12 PHP
php强制下载文件函数
Aug 24 PHP
php基于curl重写file_get_contents函数实例
Nov 08 PHP
Yii2框架控制器、路由、Url生成操作示例
May 27 PHP
thinkPHP3.2使用RBAC实现权限管理的实现
Aug 27 PHP
解决在laravel中auth建立时候遇到的问题
Oct 15 PHP
Laravel 自定命令以及生成文件的例子
Oct 23 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
第八节 访问方式 [8]
2006/10/09 PHP
用PHP+MySql编写聊天室
2006/10/09 PHP
PHP 开发环境配置(Zend Studio)
2010/04/28 PHP
基于php缓存的详解
2013/05/15 PHP
php中多维数组按指定value排序的实现代码
2014/08/19 PHP
完美解决thinkphp验证码出错无法显示的方法
2014/12/09 PHP
PHP判断IP并转跳到相应城市分站的方法
2015/03/25 PHP
两种php去除二维数组的重复项方法
2015/11/04 PHP
修改PHP脚本使WordPress拦截垃圾评论的方法示例
2015/12/10 PHP
php中类和对象:静态属性、静态方法
2017/04/09 PHP
Dojo 学习笔记入门篇 First Dojo Example
2009/11/15 Javascript
jquery $.ajax各个事件执行顺序
2010/10/15 Javascript
JavaScript简单获取页面图片原始尺寸的方法
2016/06/21 Javascript
深入浅析Vue组件开发
2016/11/25 Javascript
AngularJS实现网站换肤实例
2021/02/19 Javascript
JavaScript实现二叉树的先序、中序及后序遍历方法详解
2017/10/26 Javascript
vue的无缝滚动组件vue-seamless-scroll实例
2017/12/18 Javascript
mongoose更新对象的两种方法示例比较
2017/12/19 Javascript
JS实现简易日历效果
2021/01/25 Javascript
解决python爬虫中有中文的url问题
2018/05/11 Python
浅谈Python里面None True False之间的区别
2020/07/09 Python
软件测试笔试题
2012/10/25 面试题
销售行业个人求职自荐信
2013/09/25 职场文书
播音主持女孩的自我评价分享
2013/11/20 职场文书
给女朋友的道歉信
2014/01/10 职场文书
中考冲刺决心书
2014/03/11 职场文书
2014县政府领导班子对照检查材料思想汇报
2014/09/25 职场文书
领导班子遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
中层干部考核评语
2015/01/04 职场文书
大学毕业生个人总结
2015/02/28 职场文书
2015年护士长个人工作总结
2015/04/24 职场文书
投标售后服务承诺书
2015/04/29 职场文书
2015年教师业务工作总结
2015/05/26 职场文书
中学图书馆工作总结
2015/08/11 职场文书
护士医德医风心得体会
2016/01/25 职场文书
使用Apache Camel表达REST服务的方法
2022/06/10 Servers