Is java executor service an implementation of Command design pattern?

时间:2017-08-04 13:05:03

标签: java design-patterns executorservice

I am reading about command pattern and I was trying to figure out its implementation in JDK. I think executor service is an implementation of command pattern. Can any expert please confirm this?

1 个答案:

答案 0 :(得分:3)

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

模式的要点是将动作封装在(通常是可重用的)对象中,以便它们可以在适当的时间使用。您可以使用Callable来执行此操作,然后使用ExecutorService实际执行需要的命令。 ExecutorService s的许多用法并没有真正起作用,但是执行的Callable没有我倾向于与命令关联的一致性或一般性。然而,这是一种有点主观的判断。

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

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