怎么在PHP中使用命令模式

  介绍

这期内容当中小编将会给大家带来有关怎么在PHP中使用命令模式,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

<强> 1。使用接口强。通常命令模式的接口中只有一个方法。实现类的方法有不同的功能,覆盖接口中的方法。在面向对象编程中,大量使用<代码> if…else…> 切换……这样的条件选择语句是“最差实践”。通常这类代码,意味着有重构的余地。命令模式就是干掉条件选择语句的利器。

首先提供一个接口:

public  interface  Command  {   public 才能;void 执行();   }

然后提供这个接口的实现类。每一个实现类的方法就是<代码> if…else…的一个代码块中的代码。这样,调用方直接把一个具体类的实例传进来即可。如:

Public  void 测试(Command  para) {   Para.execute才能();   }

不需要再判断出现了哪种情况,应该执行哪一段代码。一切的问题都由调用方处理。

如果不使用命令模式,那么如果情况逐步增多,如,从原来的2种,增加到20种,那么方法中的判断就会从1次增加到19次。而使用命令模式,仅仅调用方需要从2个实现类增加到20个实现类即可。上面的测试方法根本不需要做任何改变。

<强> 2。主要的用途是,使用参数回调模式。

最主要使用命令模式的方式是使用参数回调模式。命令接口作为方法的参数传递进来。然后,在方法体内回调该接口。

当然,命令模式还可以使用其他方式来使用。不一定非用参数回调模式。

了解完这些之后,可以看一下下面的程序例子。

& lt; php ?   ,/* *   ,,*,命令模式   ,,*   ,*,才能将一个请求封装为一个对象从而使你可用不同的请求对客户进行参数化,对请求排除或记录请求日志,以及支持可取消的操作   ,,*///才能,命令接口   ,interface 命令   {才能   ,,,public  function 执行();   ,,}   ,class 调用程序   {才能   ,,,private  _command 美元;=,数组();   ,,,public  function  setCommand($命令),{   ,,,,,这个→美元_command[],=, $命令;   ,,,}   ,,,public  function  executeCommand ()   ,,,{   ,,,,,foreach ($ this→_command  as 美元命令)   ,,,,,{   ,,,,,,,命令→美元执行();   ,,,,,}   ,,,}   ,,,public  function  removeCommand(命令)   ,,,{   ,,,,,key 美元;=,函数(命令,美元,美元这→_command);   ,,,,,如果(key 美元;!==,假)   ,,,,,{   ,,,,,,,设置($ this→_command [$ key]);   ,,,,,}   ,,,}   ,,}//才能,命令接受者   ,class 接收机   {才能   ,,,private  _name 美元;=,空;   ,,,public  function  __construct(名字),{   ,,,,,这个→美元_name =,美元名称;   ,,,}   ,,,public  function 行动()   ,,,{   ,,,,,,echo  $ this→_name !”,执行攻击命令(行动)& lt; br /祝辞;“;   ,,,}   ,,,public  function  action1 ()   ,,,{   ,,,,,echo  $ this→_name !”,执行防御命令(action1) & lt; br/在“;   ,,,}   ,,}//才能,具体的命令   class 才能;ConcreteCommand  implements 命令   {才能   ,,,private  _receiver美元;   ,,,public  function  __construct(接收器)美元   ,,,{   ,,,,,这个→美元_receiver =,接收机美元;   ,,,}   ,,,public  function 执行()   ,,,{   ,,,,,这个→美元_receiver→行动();   ,,,}   ,,}//才能,具体命令1   class 才能;ConcreteCommand1  implements 命令   {才能   ,,,private  _receiver美元;   ,,,public  function  __construct(接收器)美元   ,,,{   ,,,,,这个→美元_receiver =,接收机美元;   ,,,}   ,,,public  function 执行()   ,,,{   ,,,,,这个→美元_receiver→action1 ();   ,,,}   ,,}//才能,具体命令2   class 才能;ConcreteCommand2  implements 命令   {才能   ,,,private  _receiver美元;   ,,,public  function  __construct(接收器)美元   ,,,{   ,,,,,这个→美元_receiver =,接收机美元;   ,,,}   ,,,public  function 执行()   ,,,{   ,,,,,这个→美元_receiver→行动();   ,,,,,这个→美元_receiver→action1 ();   ,,,}   ,,}   时间=美元才能objRecevier  new 接收机(“小狗“);   时间=美元才能objRecevier1  new 接收机(“刺蛇“);   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

怎么在PHP中使用命令模式