@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

ActionクラスはMVCでいうと?

1
投稿者投稿内容
hisui
会議室デビュー日: 2004/07/09
投稿数: 5
投稿日時: 2009-04-06 16:23
お世話になります。

早速になりますが、
Actionクラスといった場合、MVCでは何にあたるんでしょうか?

私は最初、Modelに当たると昔習った記憶があるのですが、
#例えばこんな感じに(http://www.atmarkit.co.jp/fjava/javafaq/j2ee/j2e07.html)
 
「ControllerはURLの解決とそれに該当するModelとViewの呼び出し(制御)を行うもの。」
と考えた時に、ActionはControllerなのでは?
っと思って以来、無性に気になってしまって。。。

身の回りの方にもいろいろとご意見伺ってみた所、お茶を濁した意見しか聞けなかったので、質問させていただきました。

参考になる文献などございましたら合わせてご教授いただけると幸いです。

宜しくお願い致します。
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2009-04-06 16:41
引用:

hisuiさんの書き込み (2009-04-06 16:23) より:
「ControllerはURLの解決とそれに該当するModelとViewの呼び出し(制御)を行うもの。」
と考えた時に、ActionはControllerなのでは?
っと思って以来、無性に気になってしまって。。。


私も、かならず3択で答えろ、と言われれば「ActionはController」です、と答えます。

というか、あまり気にしなくても良いと思います。昔から、JSP の絡みで MVC で分類するということを良く目にしますが、私はかなりあいまいな分類だと思います。

私としては、あまり的確な回答ではないかもしれませんが、まず、JSP/J2EE などとは独立して MVC だけの理論を勉強されてみてから、それを JSP/J2EE に当てはめてみる、という2段構えで学習されるほうが良いと思います。
ジン
ベテラン
会議室デビュー日: 2007/07/27
投稿数: 52
投稿日時: 2009-04-06 17:21
unibonさんと同じくControllerです。

Modelに似た機能も持たせられますが(持ってしまう)
どちらかになるとControllerと思います。

私の場合、J2EEを先に勉強して
後付けでMVCを勉強したので分かりやすかったです。
どうも理論臭いのは苦手です。
turutosiya
常連さん
会議室デビュー日: 2003/06/10
投稿数: 49
お住まい・勤務地: 東京都
投稿日時: 2009-04-06 17:35
私も、シンさん、unibonさんと同じく、Controller です。

英語大丈夫でしたら、この辺とか面白いと思います。
http://www.darronschall.com/weblog/2004/06/mvc-vs-mvp.cfm
わたなべ
大ベテラン
会議室デビュー日: 2007/12/09
投稿数: 123
お住まい・勤務地: 札幌
投稿日時: 2009-04-06 18:21
難しいですが、自分はモデルよりかと考えています。
ある書籍ではMVCは、Model(データまたはロジック)、View(表示)、Controller(それ以外)という定義でした。
通常は、Viewとはならないのは自明なのでMかCなわけですが、Cをどう捉えるかかと思います。

一般的なWebAppフレームワークでは、DispacherServletなどがリクエストを処理し、URLパターン等を解析した上で、Actionクラスと実行メソッドが実行されます。
また、ActionクラスでViewを明示するパターンもありますが、Actionクラス名やメソッド名などからViewが自然に決まったり、外部にActionとViewのマッピングを行っているケースも多いと思います。
また、サービスクラスなど処理を完全に分離するような設計をしない場合、Actionクラスでデータ取得などの簡単なロジックを組み込む事が多いと感じます。
以上の点から、ActionがViewとModelとの橋渡しをしていると捉えるよりも、ロジッククラスの一部であると捉える方が自然な気がします。
※Actionクラスを完全なControllerの一部として設計する事も可能ですが、実案件ではそうしない方が多いのかな、程度ですが。

重要な点は、設計者がActionクラスをControllerとして設計するポリシーか、緩くControllerの一部を含むModelとして設計するポリシーか、という違いではないでしょうか?

余談ですが、SwingアプリなどではActionクラスに相当する部分は、ActionLogicのようなイメージで、EventListener等から呼び出されるため、よりModelっぽい位置になると感じます。
hisui
会議室デビュー日: 2004/07/09
投稿数: 5
投稿日時: 2009-04-07 15:23
unibon様、ジン様、turutosiya様、わたなべ様

ご教授ありがとうございました!

Controller派とModel派で分かれましたけど、
基本的にはControllerで、フレームワークの造りや現場の認識によってはModelともなりうる。っということなのでしょうか。。。

私は今、出向(派遣)の業務が多いのですが、
各々(の経験・知識)によって認識が異なる場合があるので、実装の際には注意していきたいとおもいます。


turutosiya様
参考文献ありがとうございました!
英語はからきしなんですが、頑張って呼んでみたいと思います。
1

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