关于MVC中M的疑惑

hopana 发布于 2015/04/28 23:34
阅读 2K+
收藏 3

@红薯 你好,想跟你请教个问题:

去年有幸在深圳开源中国的交流会中亲自看到您,而且抽奖环节还抽到一个机械键盘。

一直以来没有亲自向大牛们请教,最近有个简单的问题想向您请教,是关于MVC的。

我理解MVC,V是View(视图)也就是前台页面,C是Controller(控制器),也就是Action;但是关于M-Model(模型)层,我也查了资料,发现在现在开发中,很多人看法不一样。网上有的帖子说分经典MVC和SSH中的MVC;有的说M只的是Java Bean,有的说M包括DAO、Service以及Java Bean.........

我觉得M包括DAO和Service以及Java Bean,他们统称为Model。不知道理解是否有误。

这是个简单的问题,但是有必要弄清楚,所以我想听听你的看法。

谢谢!

以下是问题补充:

@hopana:欢迎大家来讨论,可能没有对错,但是肯定有相对合理的理解。 (2015/04/29 11:18)
加载中
1
红薯
红薯
我觉得啊,MVC 解释权在自己,你觉得对的就是多的,真没有标准定义
1
MUTEX
MUTEX

Model本质上就是数据。最早的时候微软把类似MVC的概念叫Document-View,主要解决数据刷新后不同窗口显示同步的问题,C的部分还都有自己处理,后来发展了,C的部分也形成了一些最佳实践,慢慢融合进来加以标准化,才出现MVC。

用酒杯喝是喝酒,对着瓶子吹也是喝酒。不纠结,觉得好用就用,觉得不好用就不用。总之,要做主人,不要做奴隶。

1
Knixly
Knixly
一来就是拉仇恨的赶脚呀
0
loyal
loyal

哈哈.

Java all things without Bean .才是王道.

0
hopana
hopana

没想到@红薯 这么快就回复了,一早起来发现这么多人回复,开源中国社区真是踊跃哈。

其实起因是这样的,最近面试,一个技术面试的问我什么是MVC,我就按着我的理解说了,V和C不用多说了。我说M其实包括DAO、Service以及JavaBean,主要用来处理业务逻辑。他丫的说我做了两三年还不懂MVC,他说DAO、Service属于数据库层...我真心没有听谁这么说过,MVC居然还分数据库层。后来我提到mybatis,他说mybatis就是数据库,我感觉虽然没错,但是这么说有点...。虽然没有深入研究MVC,就算答的不完全正确,但是也不算离谱,更没到不懂MVC的地步。所以突然发现真有必要去搞清楚,现在看来的确理解和解释权在自己。

所以,我也发现,面试的时候,还真是有些面试官自己都不怎么懂,不完全懂就算,更纠结的是你跟他想的不一样,他就说你不懂,尼玛.................

C
CarsonZzzz
mybatis是数据库!!!! 那jdbc是什么?也是数据库?
jwjiang
jwjiang
我也觉得面试官说的是对的,无论如何service是绝对不能算进去M的,业务、数据持久化这跟MVC是完全不冲突的,是两回事。另外M怎么能是用来处理业务逻辑呢?
纠结名字
他说的也没错啊,DAO是数据库层,就是持久层啊。MVC是模型、视图和控制器,这个时候讨论MVC跟数据库没有半毛钱关系啊。你不能一边讨论工程结构,一边又具体到使用哪种数据库啊。
0
liuyuxiang
liuyuxiang
面试官可能不是问你技术,是考你应变能力和是否坚持自己的观点
0
hopana
hopana

       不是,如果考你应变能力或者理解分析能力,大多数面试官都是很开放的,允许多种答案,而且不会全盘否定你的答案,更不会基于他的唯一的答案来评判你不懂。我面过很多大公司,包括华为和创维等,这些公司的面试官在乎你的分析问题和需求的能力,以及处理问题的思路,是否对技术感兴趣等。他们问的问题没有具体答案,他们也不会直接对你的答案做出一个唯一评判,他们可能提供一种思路说这样做这样分析可能是最好的。

     我倒是感觉大公司的面试官倒是非常谦虚的,去创维面试的时候,面试官一直说:“互相学习互相学习!”反倒是很多小公司,你回答的不如他所愿,跟他想要的答案不一样,立马嘲笑你不懂,真的很无语。

     不过我也的确缺乏这种心理素质,也是是技术积累不够吧,当有些面试官把你当技术小白来看,甚至带有鄙视的眼光来看你的时候,我就有点乱来阵脚,开始有点慌,导致后面很多问题答的一塌糊涂,让人家觉得你真的是啥都不懂。其实现在想想,很多面试官本身不一定是对的。而且,别人说你什么根本没必要太在乎,技术是死的,人是活的,怎么看怎么理解怎么用在于自己。

0
魔力猫
魔力猫

MVC总体来说是表现层的概念。这个表现层并不仅仅指网页页面,而是整个系统对外的展示。

M是用来展示的数据,V确定展示形式,C则是用来管理从哪里拿哪些M并给哪个V。

实际当中,根据具体框架实现思想的不同,实现会有所不同,有时候M和V会组合在一起。

Left-Shift
Left-Shift
顶!
0
ArrayListt
ArrayListt

每个人的理解都不一样,没有绝对的对错

0
hopana
hopana

引用来自“刘禹星”的评论


每个人的理解都不一样,没有绝对的对错

是啊,但是面试官说我不懂的时候,我才有点意外,所以想看看大家是怎么理解的。
ArrayListt
ArrayListt
那只能说那个面试官是个煞笔呗。
返回顶部
顶部