命令(Command)模式是指将请求封装成为一个对象,使发出请求和执行请求的责任分割开,方便将命令对象进行存储、传递、调用、增加与管理。
也就是将发送者、接收者和调用命令封装成独立的对象,来供客户端调用。属于行为模式的一种。
命令模式将发送者与接受者完全解耦,发送者与接收者之间没有直接的联系,发送者只需要如何发送请求,而不需要关心请求是如何完成的。下面就来看看命令模式的结构和实现:
将调用者和实现者进行分离,其结构如下所示:

- :抽象命令角色,声明执行命令的接口
- :具体命令角色,是抽象命令角色的具体实现类
- :具体实现,具体命令对象的真正实现者
- :调用者,处理命令、实现命令的具体操作者,负责对外提供命令服务
- :客户端
根据上面的结构图,可以实现如下代码:
最后的客户端运行结果为:
下面来看看命令模式的应用场景
本文选取的Spring版本是5.3.1,来看看类中的方法:

我们看到,上面的方法中定义了一个内部类,并实现了接口,点开查看详细内容:
回到方法中,我们发现最后返回的中是将内部类当做参数进行返回。这里就相当于命令模式中的具体命令对象,而则是抽象命令对象。比如还有其他具体命令实现类,比如、等等:

看看方法,为了方便理解,代码做了精简:
根据上面的代码,可以梳理整个执行流程:

实际上这个类是调用者(Invoker)、实现者(Receiver)和具体命令实现(Concrete Command)的集合, 则是命令的抽象接口。
模拟在餐厅中点餐交给初始烹饪的场景,在该场景中点餐人员只需要把需要点的各种菜系交给服务员,服务员再把各项菜品交给厨师进行烹饪。如下图所示:

我们先分析一下,命令是菜品具体实现是菜系,命令实现是厨师,调用者是服务员。所以该场景下的命令模式结构应该为:

代码目录结构为:
具体代码如下:
- 抽象命令者及其具体实现
- 抽象实现者及其具体实现
- 调用者及客户端
最终测试结果如下:
到此这篇spring webflux适用于什么场景(spring-webflux)的文章就介绍到这了,更多相关内容请继续浏览下面的相关 推荐文章,希望大家都能在编程的领域有一番成就!
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/rfx/18405.html