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



我正在阅读有关命令模式的信息,并试图弄清楚它在JDK中的实现。我认为执行器服务是命令模式的实现。任何专家都可以证实这一点吗?

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

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

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

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

最新更新