<?php /** * 3.3 命令模式 * 定义: * 讲一个请求封装为一个对象,从而是你可用不同的请求对客 * 户进行参数化;对请求排队或记录日志,以及支持可撤销的 * 操作。 * 角色: * 1. 抽象Command类 * 职责:用来声明执行操作的接口。 * 2. 具体Command类 * 职责:将一个接收者对象绑定于一个动作,调用接收者 * 相应的操作,以实现Execute。 * 3. Invoker类 * 职责:要求该命令执行这个请求。 * 4. Receiver类 * 职责:知道如何实施与执行一个与请求相关的操作,任 * 何类都可能作为一个接受者。 * 优点: * 1. 它能较容易地设计一个命令队列; * 2. 在需要的情况下,可以较容易地将命令记入日志; * 3. 允许接收请求的一方决定是否要否决请求; * 4. 可以容易的实现对请求的撤销和重做; * 5. 因为加进新的具体命令类不影响其他的类,因此增加新 * 的具体命令类很容易; * 6. 把请求一个操作的对象与知道怎么执行一个操作的对象 * 分隔开。 * 缺点: * 1. 有可能会导致某些系统有过多的具体命令类。因为针对 * 每一个命令都需要设计一个具体命令类,因此某些系统 * 需要大量具体命令类,这将影响命令模式的使用。 * 使用场景: * 1. 系统需要将请求调用者和请求接收者解耦,使得调用者 * 和接收者不直接交互。 * 2. 系统需要在不同的时间指定请求、将请求排队和执行请 * 求。 * 3. 系统需要支持命令的撤销操作和恢复操作。 * 4. 系统需要将一组操作组合在一起,即支持宏命令。 * */ header('content-type:text/html;charset=utf8'); //抽象Command类 abstract class Command{ protected $receiver; public function __construct($receiver){ $this->receiver=$receiver; } abstract public function execute(); } //具体Command类 class ConcreteCommand extends Command{ public function execute(){ $this->receiver->action(); } } //Invoker类 //此类是用来接收来自客户端的请求,然后将请求转化为命令的执行 //命令执行的动作,最后是由最终的接受者来处理的。 class Invoker{ private $cmd; public function setCommand(Command $cmd){ $this->cmd=$cmd; } public function executeCommand(){ $this->cmd->execute(); } } //Receiver类 class Receiver{ public function action(){ echo '执行请求'; } } //客户端 //请求命令的发起者 $invoker=new Invoker(); //请求命令的最终执行者 $receiver=new Receiver(); //具体的请求 $cmd=new ConcreteCommand($receiver); //表示要设置并执行哪个请求(命令) $invoker->setCommand($cmd); $invoker->executeCommand();
设计模式之行为型模式—— 3.3 命令模式
原创great_yonchin 博主文章分类:设计模式 ©著作权
©著作权归作者所有:来自51CTO博客作者great_yonchin的原创作品,请联系作者获取转载授权,否则将追究法律责任

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
行为型模式----命令模式(C++)
文章目录行为型模式----命令模式结构与实现模式的结构命令模式的UML类图命
设计模式 c++ 命令模式 接受者 行为型模式 -
设计模式-行为型模式
设计模式,行为型模式,
设计模式 行为型模式 -
C++设计模式 - 原型模式
原型模式:用简单的方法拷贝运行时的对象。
原型模式 子类 设计模式 类对象 构造函数 -
设计模式之行为型模式
分类只从每个模式的类图中是否体现了聚合关系,也可以说从他们之间关系的强弱来进
设计模式 使用场景 行为型模式 -
行为型模式--设计模式详解?
行为型模式--设计模式详解?
设计模式 ide 封装 子类 -
设计模式3—行为型模式
行为型模式用来对类或对象怎样交互和怎样分配职责进行描述,主要包含以下11种设计模式: 模板方
#include 访问者 ios