designPattern/src/main/java/com/zeekling/command
zeek 18dad6087e 迁移仓库 2020-02-23 22:01:09 +08:00
..
test 迁移仓库 2020-02-23 22:01:09 +08:00
Command.java 迁移仓库 2020-02-23 22:01:09 +08:00
Eat.java 迁移仓库 2020-02-23 22:01:09 +08:00
Invoker.java 迁移仓库 2020-02-23 22:01:09 +08:00
Person.java 迁移仓库 2020-02-23 22:01:09 +08:00
Sleep.java 迁移仓库 2020-02-23 22:01:09 +08:00
Walk.java 迁移仓库 2020-02-23 22:01:09 +08:00
readme.md 迁移仓库 2020-02-23 22:01:09 +08:00

readme.md

命令模式

又称Action模式或者Transaction模式。它属于对象的行为模式。命令模式把一个请求或者操作封装到一个对象中。命令模式 允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和撤销功能。

主要角色

抽象命令(Command)角色

声明执行操作的接口。

具体命令(ConcreteCommand)角色

将一个接收者对象绑定到一个动作上。调用接收者相应的操作以实现Execute方法。

客户端(Client)角色

创建一个命令对象并设定它的接收者。

请求者(Invoker)角色

负责调用命令对象的执行请求;

接收者(Receiver)角色

负责具体实施和执行一个请求相关的操作。任何一个类都可以作为一个接收者。

命令模式结构图

命令模式

命令模式的优点

1、在命令者模式中请求者不直接与接受者互交既请求者不包含接受者的引用因此彻底消除了彼此之间的耦合。 2、命令者模式满足了软件的“开-闭原则”。如果增加新的具体命令和该命令的接受者,不必修改调用者的代码,调用者就可以 直接使用新的命令对象。反之如果增加新的调用者,不必修改现有的具体命令和接受者。新增加的调用者就可以使用已有的具 体命令。 3、由于请求者的请求被封装到了具体命令中那么就可以将具体命令保存到持久化媒介中在需要的时候重新执行这个具体 命令。因此使用命令者模式可以记录日志。 4、使用命令者模式可以对请求者的请求进行排队每个请求者各自对应一个具体命令因此可以按一定的顺序执行这些命令。

命令模式应用场景

1、程序需要在不同的时刻指定排列和执行请求。 2、程序需要提供撤销操作 。 3、程序需要支持宏操作 。