18dad6087e | ||
---|---|---|
.. | ||
test | ||
Command.java | ||
Eat.java | ||
Invoker.java | ||
Person.java | ||
Sleep.java | ||
Walk.java | ||
readme.md |
readme.md
命令模式
又称Action模式或者Transaction模式。它属于对象的行为模式。命令模式把一个请求或者操作封装到一个对象中。命令模式 允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和撤销功能。
主要角色
抽象命令(Command)角色
声明执行操作的接口。
具体命令(ConcreteCommand)角色
将一个接收者对象绑定到一个动作上。调用接收者相应的操作,以实现Execute方法。
客户端(Client)角色
创建一个命令对象并设定它的接收者。
请求者(Invoker)角色
负责调用命令对象的执行请求;
接收者(Receiver)角色
负责具体实施和执行一个请求相关的操作。任何一个类都可以作为一个接收者。
命令模式结构图
命令模式的优点
1、在命令者模式中,请求者不直接与接受者互交,既请求者不包含接受者的引用,因此彻底消除了彼此之间的耦合。 2、命令者模式满足了软件的“开-闭原则”。如果增加新的具体命令和该命令的接受者,不必修改调用者的代码,调用者就可以 直接使用新的命令对象。反之如果增加新的调用者,不必修改现有的具体命令和接受者。新增加的调用者就可以使用已有的具 体命令。 3、由于请求者的请求被封装到了具体命令中,那么就可以将具体命令保存到持久化媒介中,在需要的时候重新执行这个具体 命令。因此使用命令者模式可以记录日志。 4、使用命令者模式可以对请求者的请求进行排队,每个请求者各自对应一个具体命令,因此可以按一定的顺序执行这些命令。
命令模式应用场景
1、程序需要在不同的时刻指定,排列和执行请求。 2、程序需要提供撤销操作 。 3、程序需要支持宏操作 。