首页 > 语言 > PHP > 正文

php设计模式之命令模式使用示例

2024-09-04 11:46:51
字体:大 中 小
来源:转载
供稿:网友

这篇文章主要介绍了php设计模式之命令模式使用示例,命令模式将一个请求封装为一个对象,从而你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销操作。

命令类:

1.命令角色:声明了一个给所有具体命令类的抽象接口。这是一个抽象角色。

2.具体命令角色:定义一个接受者和行为之间的弱耦合;实现execute方法,负责调用接受的相应操作。execute()方法通常叫做执行方法

3.客户角色:创建一个具体命令对象并确定其接受者。

4.请求者角色:负责调用命令对象执行请求,相关的方法叫做行动方法。

5.接受者角色:负责具体实施和执行一个请求。

作用:

1.抽象出待执行的动作以参数化对象。

2.在不同的时刻指定、排列和执行请求。

3.支持取消操作

4.支持修改日志

代码如下:

  1. <?php 
  2. //命令接口 
  3. interface Command{ 
  4.      public function execute(); 
  5. } 
  6. //具体命令 
  7. class ConcreteCommand implements Command{ 
  8.      private $_receiver; 
  9.      public function __construct($receiver){ 
  10.           $this->_receiver = $receiver; 
  11.      } 
  12.      public function execute(){ 
  13.           $this->_receiver->action(); 
  14.      } 
  15. } 
  16. //接受者 
  17. class Receiver{ 
  18.      private $_name; 
  19.      public function __construct($name){ 
  20.           $this->_name = $name; 
  21.      } 
  22.      //行动方法 
  23.      public function action(){ 
  24.           echo $this->_name.'do action .<br/>'; 
  25.      } 
  26. } 
  27. //请求者 
  28. class Invoker{ 
  29.      private $_command; 
  30.      public function __construct($command){ 
  31.           $this->_command = $command; 
  32.      } 
  33.      public function action(){ 
  34.           $this->_command->execute(); 
  35.      } //Vevb.com 
  36. } 
  37. //客户端 
  38. class  Client{ 
  39.      public static function main(){ 
  40.           $receiver = new Receiver('jaky'); 
  41.           $command = new ConcreteeCommand($receiver); 
  42.           $invoker = new Invoker($command); 
  43.           $invoker->action(); 
  44.      } 
  45. } 
  46. Client::main(); 
  47. ?> 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表