java - java执行器服务是命令设计模式的实现吗?

标签 java design-patterns executorservice

我正在阅读有关命令模式的内容,并试图找出它在 JDK 中的实现。我认为执行器服务是命令模式的一种实现。请专家确认一下吗?

最佳答案

为了扩展我的评论,不,我不会说 ExecutorService 构成了命令模式的实现,但它可以用作该模式实现的一部分。 ExecutorService 本身缺乏命令模式最重要的方面:命令

该模式的要点是将操作封装在(通常可重用的)对象中,以便它们可以在适当的时间使用。您可以使用 Callable 来执行此操作,然后使用 ExecutorService 来实际执行需要的命令。不过,ExecutorService 的许多用途实际上并不是这样工作的——执行的 Callable 并不具有我倾向于关联的连贯性或通用性用一个命令。然而,这是一个有点主观的判断。

我认为在 Swing 对 javax.swing.Action 的使用中可以找到更清晰的命令模式示例。一个实现Action(命令)来执行可以通过应用程序 GUI 触发的工作。这些操作与指示它们执行工作的代码分离,事实上,每个操作都可以在多个点连接到 GUI,以便可以通过不同的 GUI 手势来执行。 Swing 通过提供 Action 接口(interface)、调用以 Action 表示的命令的组件以及用于将 Action 与 GUI 关联的 API 来实现命令模式特定组件上的手势。

例如,在可视化应用程序中,Action X 可能提供将 View 向左旋转一步的行为。这是一个连贯的、通用的、相当独立的工作单元。然后,我可以注册要调用的(同一)对象,以响应一个或多个击键、菜单项选择,甚至鼠标手势。这将要完成的工作与触发该工作的机制分离,这是命令模式的关键功能特征。

关于java - java执行器服务是命令设计模式的实现吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45507635/

相关文章:

java - 从 rcp 插件创建 exe 时检测到循环依赖关系

java - 迭代集合的数组列表

design-patterns - MVVM - 查看显示有关多个模型的信息

algorithm - 学习编程技巧的优先顺序及其他建议

java - 我们是否需要关闭 ExecutorService fixedThreadPool

java - 关闭正在处理 Stream 的 ExecutorService

java - 处理窗口而不关闭整个程序

java - @PreAuthorize 注释不起作用 Spring 安全性

design-patterns - 为什么使用查询对象设计模式

java - ScheduledExecutorService 可抛出丢失