2017-08-04 8 views
0

私はコマンドパターンについて読んでいて、私はJDKでその実装を理解しようとしていました。私は、Executorサービスはコマンドパターンの実装だと思います。どの専門家もこれを確認できますか?Java ExecutorサービスはCommandデザインパターンの実装ですか?

+0

あなたの質問に直接関係はありませんが、IMHO非常に興味深いです:https://stackoverflow.com/questions/1673841/examples-of-gof-design-patterns-in-javas-core-libraries?rq=1 –

+2

コマンドパターンにはいくつかの重要な要素があり、そのうちのExecutorServiceは[Wikipedia](https://en.wikipedia.org/wiki/Command_pattern)の用語では "invoker"と見なすことができます)。このビューでは、「コマンド」の役割は「呼び出し可能」実装によって満たされます。しかし、私はいくつかのプログラムがパターンを実装する際に 'ExecutorService'を使用していると言いたいと思います。 –

+0

ExecutorServiceはExecutorのサブインターフェイスです。詳しくは、http://www.dre.vanderbilt.edu/~schmidt/cs892/2017-PDFs/Java-Executor-pt1-pt2.pdf – Fuhrmanator

答えて

1

コメントを拡大するには、いいえ、私はExecutorServiceがCommandパターンの実装を構成しているとは言いませんが、そのパターンの実装の一部として使うことができます。 ExecutorService自体には、コマンドパターンの最も重要な側面がありません。コマンドです。

パターンのポイントは、(通常は再利用可能な)オブジェクトにアクションをカプセル化して、適切なタイミングで使用できるようにすることです。 Callableを使用して、ExecutorServiceを使用して、必要に応じて実際にコマンドを実行することができます。しかし、実行されるCallableは、私がコマンドに関連付ける傾向のある一貫性や一般性を持たないため、ExecutorServiceの多くの用途は実際にはそれほど機能しません。しかし、これはやや主観的な判断です。

私はCommandパターンのより明確な例が、Swingのjavax.swing.Actionの使用にあります。 Oneは、アプリケーションGUIを使用してトリガできる作業の一部を実行するAction(コマンド)を実装しています。アクションは、それらの作業を行うためのコードから切り離されています。実際、各GUIは複数のポイントでGUIに接続できるため、異なるGUIジェスチャーで実行できます。 Swingは、Actionインターフェイス、Actionとして表されるコマンドを呼び出すコンポーネント、およびActionを特定のコンポーネントのGUIジェスチャに関連付けるAPIを提供することによって、コマンドパターンを実装します。

例えば、視覚化アプリケーションでは、ActionXは、ビューを一歩左に回転させる動作を提供する場合があります。それは一貫性があり、一般的で、かなり自己完結型の作業単位です。次に、1つ以上のキーストローク、メニュー項目の選択、およびマウスジェスチャーに応答して呼び出される(同じ)オブジェクトを登録することができます。これは、コマンドパターンの重要な機能特性である作業をトリガするためのメカニズムと、実行されるべき作業とを切り離します。

+0

をご覧ください。これらの微妙な内容については、https://www.dre.vanderbilt .edu /〜schmidt/PDF/CommandProcessor.pdf – Fuhrmanator

関連する問題