我正在阅读有关命令模式的内容,并试图找出它在 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/