PHP   发布时间:2022-04-09  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了学习php设计模式 php实现命令模式(command)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

一、意图

一个请求封装为一个对象,从而使用你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。 可变的方面是:何时,怎样满足一个请求 命令模式是对命令的封装。命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的对象。 请求的一方发出请求要求执行一个操作;接收的一方收到请求,并执行操作。命令模式允许请求的一方和接收的一方独立开来,使得请求的一方不必知道接收请求的一方的接口,更不必知道请求是怎么被接收,以及操作是否被执行、何时被执行,以及是怎么被执行的。

二、命令模式结构图

学习php设计模式 php实现命令模式(command)

三、命令模式中主要角色

命令(Command)角色:声明了一个给所有具体命令类的抽象接口。这是一个抽象角色。 具体命令(ConcreteCommand)角色:定义一个接受者和行为之间的弱耦合;实现Execute()方法,负责调用接收的相应操作。Execute()方法通常叫做执行方法。 客户(Client)角色:创建了一个具体命令(ConcreteCommand)对象并确定其接收者。 请求者(Invoker)角色:负责调用命令对象执行请求,相关的方法叫做行动方法。 接收者(Receiver)角色:负责具体实施和执行一个请求。任何一个类都可以成为接收者,实施和执行请求的方法叫做行动方法

四、命令模式的优点

命令模式的优点: 1、命令模式把请求一个操作的对象与知道怎么执行一个操作的对象分离开。 2、命令类与其他任何别的类一样,可以修改和推广。 3、可以把命令对象聚合在一起,合成为合成命令。 4、可以很容易的加入新的命令类。 命令模式的缺点:可能会导致某些系统有过多的具体命令类。

五、命令模式适用场景

1、抽象出待执行的动作以参数化对象。Command模式是回调机制的一个面向对象的替代品。 2、在不同的时刻指定、排列和执行请求。 3、支持取消操作。 4、支持修改日志。 5、用构建在原语操作上的高层操作构造一个系统。Command模式提供了对事务进行建模的方法。Command有一个公共的接口,使得你可以用同一种方式调用所有的事务。同时使用该模式也易于添加新事务以扩展系统。

六、命令模式与其它模式

合成模式(composite模式):Composite模式可被实现宏命令 原型模式(prototype模式):如果命令类带有clone(或在之前的文章中提到的copy方法)方法,命令就可以被复制。在命令模式支持多次取消操作时可能需要用到此模式,以复制当前状态的Command对象

七、命令模式PHP示例

php;">

/**

  • 执行方法
    */
    public function execute();
    }

/**

  • 具体命令角色
    */
    class ConcreteCommand implements Command {

private $_receiver;

public function __construct(Receiver $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.
    ';
    }
    }

/**

  • 请求者角色
    */
    class Invoker {

private $_command;

public function __construct(Command $command) {
$this->_command = $command;
}

public function action() {
$this->_command->execute();
}
}

/**

  • 客户端
    */
    class Client {

    /**

      @H_419_52@main program.
      */
      public static function main() {
      $receiver = new Receiver('PHPppan');
      $command = new ConcreteCommand($receiver);
      $invoker = new Invoker($command);
      $invoker->action();
      }
      }

Client::main();

?>

大佬总结

以上是大佬教程为你收集整理的学习php设计模式 php实现命令模式(command)全部内容,希望文章能够帮你解决学习php设计模式 php实现命令模式(command)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。