コマンドパターン: -要求はオブジェクトの下にコマンドとしてラップされ、呼び出し元オブジェクトに渡されます。 Invokerオブジェクトは、このコマンドを処理できる適切なオブジェクトを探し、コマンドを実行する対応するオブジェクトにそのコマンドを渡します。このユースケースでのコマンドデザインパターンの適用?
人事担当者が従業員の作成/閲覧/更新/削除ができる従業員管理システムを考えてみましょう。私のキャリアの中で、私はいつも
Request from browser -> EmployeeController -> EmployeeService -> EmployeeDao
EmployeeService.javaはすべてが作成/更新/ Commandパターンを読んだ後、コントローラ
から呼び出される操作を削除/読み、私が見る含まれていますのようなものを、このユースケースを設計しましたコントローラがInvokerとして動作してDeleteCommandHandler/UpdateCommandHandler/CreateCommandHandler/ViewCommandHandler/ViewCommandHandlerのような適切なCommandHandlerを呼び出すようにする別の方法
コマンドの適用パターンはここで意味がありますか?
「コマンドデザインパターンは間接的なレイヤーを提供し、CRUDコマンドだけに限定する必要はありません。より適切な使用のために、コマンドオブジェクトとしての呼び出し側がレイヤー内を通過することができるようになりました。 – emilly
@ emilyあなたの設計ではすでにサービス層があります。このサービス層はDAOオブジェクトを直接呼び出しています。すべての_requests_(CRUDを含む)を適切なコマンドオブジェクトとして実装できます。これは、サービス層とそれを実行することができる実際のオブジェクト(_Receiver_と呼ばれる)の直接結合を壊すコマンド層を形成する。このようなインダイレクションの層は、大規模なアプリケーションで非常に役立ちます。コマンド層は、コマンドのロギング、操作の取り消しなどを適切に制御できます。MetaCommandは、コマンドを内部でカプセル化できます。 –
私がコマンド・パターに行くと、コントローラーはeditコマンドハンドラーのような適切なコマンドハンドラーを見つけるでしょう。したがって、コントローラからサービスへの直接的な指示はありませんが、コントローラからコマンドハンドラへの直接的な指示はありません。右 ? – emilly