行为设计模式->命令模式
2018-12-07 本文已影响0人
liu66_net
-
目的(不是很明白,复制的laravel china 的)
1.我们有一个调用程序和一个接收器。 这种模式使用「命令行」将方法调用委托给接收器并且呈现相同的「执行」方法。 因此,调用程序只知道调用「执行」去处理客户端的命令。接收器会从调用程序中分离出来。
2.这个模式的另一面是取消方法的 execute(),也就是 undo() 。命令行也可以通过最小量的复制粘贴和依赖组合(不是继承)被聚合,从而组合成更复杂的命令集。 -
角色
1.Receive 接收者角色 该角色就是干活的角色,所有的命令执行的地方
2.Command 命令角色 需要执行的命令在此执行
3.Invoker 调用者 接收命令并执行命令 -
命令模式的优点
1.类与类之间解耦,调用者与接收者之间没有依赖关系,调用者实现功能时只需调用Command抽象类的execute方法就可以,不需要了解到底是哪个接收者执行。
2.可扩展性:Command的子类可以非常容易地扩展,而调用者Invoker和高层次的模块Client不产生严重的代码耦合。
3.命令模式结合其他模式:命令模式可以结合责任链模式,实现命令族解析任务;结合模板方法模式,则可以减少Command子类的膨胀问题 -
命令模式的缺点
1.在项目中如果对命令模式使用不慎,那么Command的子类可能会因为有N个命令,而扩展成N个,使得Command类变得非常庞大