プログラミング初心者で御座います。
現在、MVCフレームワークを使って開発をしようと考えており、
PerlのCatalystというフレームワークをちょこっと勉強しました。
そこで1点わからないことが出てきたのですが
MVCフレームワークでM(Model)とC(Controller)を分けるメリットは
何でしょうか?
拙い知識では、処理の流れとして
(1)C(Controller)がM(Model)を利用してデータをやり取りし、
(2)最後にV(View)に投げる
というものになると思います。
V(View)は(1)が完全に終わってから「後はヨロシク」という感じで
丸投げできるので、分ける意味は分かります。
ところが、C(Controller)とM(Model)は行ったり来たりの
やり取りをする必要があるので
複数のファイルに分けると逆に非効率になると思います。
なぜ敢えてCとMを分けているのか教えてください。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
リクエスト値を受け取る等、汎用的な処理をControllerが行うことで
Model側では「やりたいこと」だけを記述すれば済むようになります。
Catalystというフレームワークは使ったことがありませんが
WEBアプリケーションならば
1. Controllerがリクエストを受ける
2. リクエスト内容に従ってModelを呼び出し、指示を与える
3. Modelからの結果に従ってViewを呼び出し、表示する
という流れになると思いますが、この場合「行ったり来たり」は発生しませんよね。
「行ったり来たり」が発生する「MVCフレームワーク」は「使いづらい」というだけではないでしょうか。
なるほど!
確かに「行ったり来たり」は発生しませんね。
> 「行ったり来たり」が発生する「MVCフレームワーク」は
> 「使いづらい」というだけではないでしょうか。
納得です。
ありがとうございました!
No.2
- 回答日時:
まず、それぞれの意味について再確認しておいてください。
http://ja.wikipedia.org/wiki/MVC
MVCにおいてmodelは中核の部分で、人間が直接操作できるならいいのですが、そうはいかないためVIEWが存在します。
Controllerはmodelとviewの接続役です。
modelとControllerが一緒になるということは、modelが特定の場面だけで使うようになっているということになります。
本来、MVCに分離しているのは、データの再利用をするためで、特定の場面でしか使えないのは問題です。
MVCの考え方はオブジェクト指向と密接な関係がありますので、こちらも学習してみてください。
No.3
- 回答日時:
MVCに対する考え方や捕らえ方も変わってきています
初期の「smalltalk」のMVCは最近の「Squeak(morph)」では十分な説明にならないように思います
MVCに疑問をもたれたら一度「Smalltalk」を調べ、「Squeak」で確認されることをアドバイアスさせていただきます
使わないと損をするModel-View-Controller
http://www.jac-net.com/~tarzan/smalltalkers/mvc/ …
How to use the MVC elements (an example)
http://wiki.squeak.org/squeak/478
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
サーバー内でPDF自動生成したい...
-
ハウスキープ処理について
-
サーバ上でアプリケーションを...
-
腕時計の時報をならないように...
-
ボタンが活性化の場合とは、ボ...
-
【JavaScriptわからない】1クリ...
-
aタグによる複数リンクを別セッ...
-
ServletからServletへの値渡し
-
アドレスバーに引数を表示させ...
-
[VB6]画像切り取り
-
VB6 開発環境のエディタに行...
-
このadidasの腕時計の時刻の設...
-
フォルダ改行
-
グローバルIPアドレスの変更タ...
-
javascriptでローカルフォルダ...
-
漏電遮断器の黄色ボタンと白色...
-
三菱GOTの画面切り替えについて
-
window.openについて
-
htaについて。親画面子画面を認...
-
JSPで、sessionのタイムアウト...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CPUを2つ搭載するといいのです...
-
NetworkStreamからのRead()で、...
-
Webサービスについて(基になる...
-
画面サイズ取得について
-
PerlからDB接続し、データ登録...
-
IIS+VBScriptでの処理待ちについて
-
一定時間でPostBackさせたい(A...
-
ASPとCGIの違い
-
別のサーバにリクエストを飛ば...
-
処理終了後、他のプログラムへP...
-
Socket通信で、通信終了のイベ...
-
ASPでDLLの呼び出し
-
サーバーの仕組みについて
-
ハウスキープ処理について
-
RedirectとTransferの違い
-
<%@ language="VBScript" %>
-
マルチスレッドチャットプログ...
-
CGI(Perl)のメッセージボックス...
-
Perlで処理の進行状況をユ...
-
簡易DBの作成方法について
おすすめ情報