0

複数のREST呼び出しを行う必要がある私のプロジェクトの1つでコマンドパターンを使用したいと思います。私はそれが属しているモジュールに従ってWebメソッド呼び出しをカプセル化しました。 XYZDataManagerには、XYZモジュールに関連するすべてのWebメソッド呼び出しが含まれています。コマンドデザインパターンで各具体的なコマンド内で複数のリクエストを処理する方法は?

こう言っていますが、ここでコマンドパターンはどのようになっていますか?私はすべての単一のWebメソッド呼び出しに対してコマンドクラスを作成したくありません。私は上記カプセル化を保持したい。

私の頭に浮かんだ考えの1つは、すべての具象コマンドクラスの中にRequestTypeのような列挙型を作ることでした。そして、我々はコマンドインタフェースでexecute(RequestType)メソッドを持っています。各具体的なコマンドは、それに応じてexecute(RequestType)を実装し、RequestType paramによって決定されるように内部メソッドを呼び出します。

私は正しくやっていますか?それとも良い方法がありますか?または、ここでコマンドパターンを使用すると、単純にすべての廃棄物ですか?

コンシューマコードに完全なリクエスト作成(RequestTypeと使用する具体的なコマンドを含む)を残しておきますか?または、コンシューマーコードからこれを抽象化するFactoryメソッドに移動する必要がありますか?

+2

ここで解決しようとしている問題を明確にすることはできますか?何をする必要があるのか​​を結びつける方法を探しているなら、Mediatorパターンはより適切でしょうか? –

+0

私はちょうどコマンドの呼び出し元と受信者の分離を望んでいるので、新しいコマンドを追加しても呼び出し者は変更されません。 – rahil008

+0

メディエーターのパターンがあなたのためであるように聞こえます。この(http://codeopinion.com/organize-by-feature/)一連のブログ記事は有用でしょうか? –

答えて

1

コマンドパターンは、コマンドの生成/呼び出しを実行から切り離すために使用されます。 RESTサーバーのコンテキストでは適切ではありません。 RESTプロトコルを使用すると、コマンド・パターンが不要になります。RESTプロトコル自体は、呼び出しを実行から分離します。

コマンドパターンが使用される典型的な場所は、マルチスレッドとGUIを使用したモノリシックアプリケーションです。マルチ処理には適していません。 RESTは、複数の処理環境で使用できます。

1

私はJava WebサービスでRESTを使用しており、その中でコマンドパターンを使用しています。 私の使い方では、すべてのRESTエンドポイント(GET、POST、PUT、DELETE)を公開する1つのResourceクラスがありました。これらのエンドポイントのメソッドは、用途に応じて異なるコマンドを呼び出しました。

例:GetUserDataCommandクラス...と呼ばれるGETメソッド。

アクションをカプセル化するためにコマンドパターンが使用されましたが、エンドポイント(例:/ユーザー)あたり1つのリソースクラス(たとえばUserResource)がありました。

関連する問題