私はコマンドパターンについて読んでいて、私はJDKでその実装を理解しようとしていました。私は、Executorサービスはコマンドパターンの実装だと思います。どの専門家もこれを確認できますか?Java ExecutorサービスはCommandデザインパターンの実装ですか?
答えて
コメントを拡大するには、いいえ、私はExecutorService
がCommandパターンの実装を構成しているとは言いませんが、そのパターンの実装の一部として使うことができます。 ExecutorService
自体には、コマンドパターンの最も重要な側面がありません。コマンドです。
パターンのポイントは、(通常は再利用可能な)オブジェクトにアクションをカプセル化して、適切なタイミングで使用できるようにすることです。 Callable
を使用して、ExecutorService
を使用して、必要に応じて実際にコマンドを実行することができます。しかし、実行されるCallable
は、私がコマンドに関連付ける傾向のある一貫性や一般性を持たないため、ExecutorService
の多くの用途は実際にはそれほど機能しません。しかし、これはやや主観的な判断です。
私はCommandパターンのより明確な例が、Swingのjavax.swing.Action
の使用にあります。 Oneは、アプリケーションGUIを使用してトリガできる作業の一部を実行するAction
(コマンド)を実装しています。アクションは、それらの作業を行うためのコードから切り離されています。実際、各GUIは複数のポイントでGUIに接続できるため、異なるGUIジェスチャーで実行できます。 Swingは、Action
インターフェイス、Action
として表されるコマンドを呼び出すコンポーネント、およびAction
を特定のコンポーネントのGUIジェスチャに関連付けるAPIを提供することによって、コマンドパターンを実装します。
例えば、視覚化アプリケーションでは、Action
Xは、ビューを一歩左に回転させる動作を提供する場合があります。それは一貫性があり、一般的で、かなり自己完結型の作業単位です。次に、1つ以上のキーストローク、メニュー項目の選択、およびマウスジェスチャーに応答して呼び出される(同じ)オブジェクトを登録することができます。これは、コマンドパターンの重要な機能特性である作業をトリガするためのメカニズムと、実行されるべき作業とを切り離します。
をご覧ください。これらの微妙な内容については、https://www.dre.vanderbilt .edu /〜schmidt/PDF/CommandProcessor.pdf – Fuhrmanator
- 1. メディエーターのデザインパターンをJavaで実装
- 2. Executorサービスの従属スレッド - Java
- 3. Java Executorサービス接続プール
- 4. JavaScriptデザインパターンの実装方法
- 5. Javaは文字列でFlyweightデザインパターンを実装していますか?
- 6. Adaのデザインパターンのリファレンス実装は?
- 7. Gridgain Executorサービス
- 8. 多くのデザインパターンを実装したプロジェクトですか?
- 9. Executorサービスは最初のタスクのみを実行します
- 10. 非静的メソッドでjavaのexecutorサービスを使用する
- 11. java実装:Webサービスをポーリングする
- 12. NettyとScheduled Executorサービス
- 13. Java:別のマルチスレッドExecutor内のシングルスレッドサブExecutor
- 14. Springアプリケーションのデザインパターンへの実装
- 15. 一般的なデザインパターンの実装のアドバイス
- 16. コード臭 - どのデザインパターンと実装方法?
- 17. Java WebサービスでSoap Faultを実装する方法は?
- 18. Java WebサービスでGoogleプッシュ通知を実装する方法は?
- 19. Thread Executorと通知でCallableを簡単に実装する
- 20. Executorサービスでスレッドを停止する
- 21. JavaでApple Push Notificationサービスを実装するのに役立つ
- 22. Executorサービスと非常に高速なJavaコードの終了?
- 23. JavaでのJavaの実装
- 24. 私のC++デザインパターンをより良く実装するには?
- 25. Javaでのntlmの実装ですか?
- 26. JavaのWebサービス実装クラスからUserNameにアクセス
- 27. C++でHALを実装するためのデザインパターン
- 28. Golangサービス/ daosの実装
- 29. Webサービス - 実装側のタイムアウト
- 30. サービスのためのJavaデザインパターンをオブジェクトに適用する
あなたの質問に直接関係はありませんが、IMHO非常に興味深いです:https://stackoverflow.com/questions/1673841/examples-of-gof-design-patterns-in-javas-core-libraries?rq=1 –
コマンドパターンにはいくつかの重要な要素があり、そのうちのExecutorServiceは[Wikipedia](https://en.wikipedia.org/wiki/Command_pattern)の用語では "invoker"と見なすことができます)。このビューでは、「コマンド」の役割は「呼び出し可能」実装によって満たされます。しかし、私はいくつかのプログラムがパターンを実装する際に 'ExecutorService'を使用していると言いたいと思います。 –
ExecutorServiceはExecutorのサブインターフェイスです。詳しくは、http://www.dre.vanderbilt.edu/~schmidt/cs892/2017-PDFs/Java-Executor-pt1-pt2.pdf – Fuhrmanator