当前位置:首页 > PHP教程 > php面向对象 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2020-10-06 11:15:54 浏览: 评论:0 

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

命令类:

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

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

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

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

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

作用:

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

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

3.支持取消操作

4.支持修改日志

代码如下:

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

Tags: php设计模式

分享到: