定义
将一个请求封装为一个对象,
使发出请求的责任和执行请求的责任分割开。
这样两者之间通过命令对象进行沟通,
这样方便将命令对象进行储存、传递、调用、增加与管理。
抽象命令类(Command)角色:
声明执行命令的接口,拥有执行命令的抽象方法 execute()。
具体命令角色(Concrete Command)角色:
是抽象命令类的具体实现类,它拥有接收者对象,并通过调用接收者的功能来完成命令要执行的操作。
实现者/接收者(Receiver)角色:
执行命令功能的相关操作,是具体命令对象业务的真正实现者。
调用者/请求者(Invoker)角色:
是请求的发送者,它通常拥有很多的命令对象,并通过访问命令对象来执行相关请求,它不直接访问接收者。
1 public class Command {
2 public static void main(String[] args) {
3 //执行者
4 receive re = new receive();
5 //命令对象
6 SpecificComm tv = new SpecificComm(re);
7 //请求者
8 Invoker invoker = new Invoker(tv);
9 invoker.call();
10 }
11 }
12
13 //调用者
14 class Invoker {
15 private Comm comm;
16
17 public Invoker(Comm comm) {
18 this.comm = comm;
19 }
20
21 public void call() {
22 comm.execute();
23 }
24 }
25
26 //抽象命令
27 abstract class Comm {
28 //定义命令的接口,声明执行的方法。
29 abstract void execute();
30 }
31
32 //具体命令:将命令封装成对象
33 class SpecificComm extends Comm {
34 //通过调用接收者的功能来完成命令要执行的操作
35 private receive receive;
36
37 public SpecificComm(receive receive) {
38 this.receive = receive;
39 }
40
41 @Override
42 void execute() {
43 receive.action();
44 }
45 }
46
47 //接受者:处理命令
48 class receive {
49 public void action() {
50 System.out.println("开始行动");
51 }
52 }