设计模式一命令模式


欢迎光临我的博客[http://poetize.cn],前端使用Vue2,聊天室使用Vue3,后台使用Spring Boot




定义

   将一个请求封装为一个对象,
使发出请求的责任和执行请求的责任分割开。
这样两者之间通过命令对象进行沟通,
这样方便将命令对象进行储存、传递、调用、增加与管理。

抽象命令类(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 }
posted @ 2019-07-31 00:46  LittleDonkey  阅读(127)  评论(0编辑  收藏  举报