- - PR -
ビジネスロジックの設計
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2003-11-04 22:19
現在Struts1.1を利用したいと思っているのですが、
以下のように設計方針で悩んでいます。 「ビジネスロジックはフレームワークに依存したくない。 けど、ActionFormの入力値やMessageResourcesの例外メッセージは 使いたい。いっそのこと間にインターフェースをかませるか? もしくは素直にStrutsに依存した作りにするべきか…」 ビジネスロジックでStrutsの機能を使いたい時、 皆さんはどのように解決しているのでしょうか? それともStrutsのクラスを渡すのが普通なのでしょうか? お聞かせ願えませんか? | ||||
|
投稿日時: 2003-11-05 19:13
ビジネスロジックでActionFormの入力値をとりたいのであれば、普通にActionFormを引数にするのがいいでしょう。ActionFormの構造は単純なJavaBeanですから、大きくフレームワーク依存とはいえないはずです。もし気になるようであれば、ActionFormからGetter、Setterをインターフェースとして分離し、それ経由でActionFormを利用すればいいでしょう。Eclipseにはインターフェース抽出機能が存在しています。
また、MessageResourcesについては直接ビジネスロジックから利用しないほうがいいと思います。メッセージ取得はビジネスロジックからよく利用されますし、ステートレスに利用したいでしょうから、独自にメッセージ管理クラスを提供するのがいいと思います。Strutsとメッセージを共有したいのであれば、メッセージ管理クラスの背後にMessageResourcesを配置する形にしておけば問題ないでしょう。 ビジネス層実装のコツとしてはプレゼンテーションロジックと分かれた別サーバーで実行されることを意識して設計することです。実際にはほとんどのケースで同一JVMで実行されますが、あとでEJBなどの技術を利用したい場合に容易に移行が可能になります。 | ||||
|
投稿日時: 2003-11-05 19:16
始めまして、ぼらさん。
私はビジネスロジックでStrutsの機能を使わないようにしています。 例えば、ActionFormの入力値については、ActionFormとは別なValueObjectを作っています。 Actionクラスで、ActionFormからValueObjectに値をコピーし、、ビジネスロジックに対して引数としてValueObjectを渡す感じです。 普通なのかどうかはわかりませんが・・・ | ||||
|
投稿日時: 2003-11-05 19:15
始めまして、ぼらさん。
私はビジネスロジックでStrutsの機能を使わないようにしています。 例えば、ActionFormの入力値については、ActionFormとは別なValueObjectを作っています。 Actionクラスで、ActionFormからValueObjectに値をコピーし、、ビジネスロジックに対して引数としてValueObjectを渡す感じです。 普通なのかどうかはわかりませんが・・・ | ||||
|
投稿日時: 2003-11-06 21:21
>ビジネス層実装のコツとしてはプレゼンテーションロジックと分かれた
>別サーバーで実行されることを意識して設計することです。 EJBといえば、EclipseのJBossプラグインで生成されたソース見て眩暈がした覚えが…(汗) とりあえずEJBは置いとくとしても、ActionFormはインターフェース越しに使い、 メッセージはStrutsとの共有は諦めて独自の管理クラスを作ることにします。 データベースとの遣り取りはTorqueあたりを検討してみようかと思います。 Anthyhimeさん、あらさん 貴重なご意見ありがとうございました。 | ||||
|
投稿日時: 2003-11-08 14:42
ビジネスロジックはStrutsに依存しないCommandパターンで実装し、StrutsのActionForm などからそのCommandオブジェクトを構築するBuilderクラスを作る、というのはどうですか? 完全に分離するとすれば、Commandオブジェクトからの実行結果をActionFormオブジェクトに コピーする処理も必要なので、そこまでする必要があればですが… メッセージに関しては、完全に分離したほうがよいでしょう。そもそもビジネスロジック クラスでは画面出力用のメッセージではなく、ログ出力でしょうから、共有する必要はないと 思います。 | ||||
|
投稿日時: 2003-11-08 18:22
ちょうど、このへんの話が「実践J2EEシステムデザイン」の12章で議論されています。
一読されてみてはいかがでしょうか。 筆者の結論としては「ActionFormの手法は、洗練されてないのでダメ」 だそうです。 まぁ、使うのがDynaActionFormか普通のActionFormかによって、 結論は微妙に異なるとは思いますが。 DynaActionFormにはgetMapというメソッドがあるので、フォームの内容を すぐにStruts非依存のMapに変換できて便利ですよ。 | ||||
1
