- PR -

MVCのうまい連携について

投稿者投稿内容
小僧
ぬし
会議室デビュー日: 2002/08/14
投稿数: 526
投稿日時: 2007-06-29 11:50
Modelが増えるたびにコントローラを修正したくないならば、
キー情報とModelインスタンスを設定したMapからモデルの
インターフェースを取得する、一種のファクトリクラスを作成。
コントローラはURLとかリクエストパラーメータからModelを
特定する情報を取得して、先ほどのクラスからモデルを取得
して処理する形なんてどうですかね。
状況に応じたコントローラ固有の処理も、同様の方法で取得
すれば更に柔軟になると思います。
一通りそれっぽい形になったら、今度はDIコンテナと絡ませて
あげたりすると面白いですよ。

初めからStrutsを使うのは、私もお勧めしません。
一度サーブレット + JSP でこういったフレームワーク的な
物を作ってからStrutsを使うと、便利なところと不便なところ
が良く分かるようになると思います。

文系
会議室デビュー日: 2007/06/29
投稿数: 3
投稿日時: 2007-07-01 22:35
flatline様>
ご指摘のとおりControllerを一つにしようとしていました。
フレームワークを検討する時には是非参考にさせて頂きます。
やはりJAVAはエキストエディタ派よりもフレームワーク派の方が多そうですね。

杏様>
XMLの設定で、何とかする方法があるのですね。
う〜む、奥が深い。
調べてみます!

mio様>
Class.forName()で変数からインスタンスを作れるのですか!!
ありがとうございます。
月曜日早速実践してみます。

nagise様>
XMLのマッピング、
javaのリフレクション機能、
の情報ありがとうございます。
専門用語、パッケージがわかるとググリ安くなるので、
助かります。

小僧様>
『キー情報とModelインスタンスを設定したMap』
間違ってたらすいません。
連想配列でインスタンス、キーでやる感じという認識であってますか?

http://***/Controller?model=XXX
にアクセスされたらXXXのキーで配列に格納されている
インスタンスを呼び込む・・・
という感じでしょうか?

多分私の解釈まちがってますね(^^;
すいません。

一緒のファクトリクラスとありますので、
http://www.nulab.co.jp/designPatterns/designPatterns2/designPatterns2-2.html
に書かれてあるようなイメージの方が正しいですか。

皆様貴重なご意見ありがとうございました。
今回の頂いた情報を試し、また何をどうしたか投稿します。

後やっぱし、
instantiateでモデルのインスタンスを生成して、
そのときのコンストラクタで処理を終わらせるというのは
いまいちですよね?

モデルのインスタンス = java.beans.Beans.instantiate(this.getClass〜,モデルを示す変数);

でインスタンスを生成して、
各モデルは、コンストラクタに処理をするメソッドをぶち込んでおく。
なんかレクエストによってやりたい時は、sessionでデータいれていて、それを使う・・・
って感じのイメージはいまいちですね^^;
小僧
ぬし
会議室デビュー日: 2002/08/14
投稿数: 526
投稿日時: 2007-07-02 14:20
引用:

連想配列でインスタンス、キーでやる感じという認識であってますか?


ええ、そんな感じです。ファクトリクラスのような情報の隠匿化は二の次で、
手っ取り早くリクエスト毎にモデルを変更することを優先した場合の話です。

スキルアップ/キャリアアップ(JOB@IT)