2011-08-01 16 views
2

私はspring-mvcを使用していますが、私のコントローラには多くのロジックが含まれています。 3 - 5サービスBeanがビジネスプロセスを構成し、1つのハンドラで呼び出された場合、いくつかの検証が含まれ、正または負の応答を持つif-else条件がいくつか発生します。MVCパターンで単純なビジネスプロセスを処理しますか?

可能な解決策の1つに、サービスビーンへのすべての参照とそのメソッドの共通インターフェイスが含まれているファサードがあります。これにより、MVCパターンで例外境界を構成することも簡単になりますが、ビジネスプロセスにはいくつかのロジックと検証があり、ハンドラメソッドでは引き続き処理されます。

このようなものを作成する必要がありますか? :

BusinessProcess { 

processOrder() { 
    serviceBeanA.call(); 
    result = serviceBeanB.call(); 
    validator.validate(result); // throw exception 
    serviceBeanC.call(result); 
} 
} 

ハンドラーでBusinessProcess Beanのみを使用しますか?例外や戻り値をキャッチすると、何が間違っていて、応答に何を含めるべきかがわかります。それ以外の場合、processOrderメソッドの内容はハンドラに含まれます。

正しいですか?もしそうなら、このパターンはどのように呼び出されますか?

答えて

0

私が正しく理解していれば、あなたが提案するようにしてください。私はこの「パターン」の名前はないとは思わない。あなたは不確かなように思えるので、正しいことを考えていると思います。

処理オーダーは、ハンドラーが関心を持つ論理抽象です。OrderProcessorBean(またはBusinessProcessImpl)が実際にこれをどのように実現するかは実装の詳細であり、ハンドラー/コントローラーからは隠されています。

このようなBeanを持たないコントローラでは、processOrderメソッドを記述することができます。コントローラには、注文の処理の詳細を扱うサービスBeanへの依存と参照があります。あなたが気づいたように、これは良いデザインではありません。

処理コードによって例外が飛び出し、呼び出し元によってどのように処理されるのかが気になることはありません。おそらくトランザクションがロールバックされ、エラーメッセージを含むHTMLがエンドユーザに提供されるかもしれませんが、注文を処理するコード(ビジネスロジック)はSpring MVCやHTMLなどがあることを知るべきではありません。

関連する問題