最近看到一篇关于 MVC 的文章:MVC 是一个巨大误会,我就直接贴链接了。
MVC 本身就是一种架构,一种模式,一种理念,并不是 model+cntroller+view = MVC,我没有细看这篇文章,但是感觉作者太过于纠结名词,忽略了其本质。
看完了,感觉有点奇怪。
我赞同 @jasonliu 的观点,MVC 就是一种理念,不用去纠结名词。不过我觉得为了深入理解,还是应该看看 MVC 最原始的定义。这可以反过来更好地理解设计思路,而且对理解其他框架也更有帮助。想挖挖的可以看看 Wikipedia Model–view–controller 。这不是纠结,是较真。
但要说较真吧,我觉得作者其实也不大较真,通篇其实他就在纠结 Model 2 和 MVC。这点还不如看看 Digesting JavaScript MVC。虽然别人目的是比较主流的 JavaScript MVC 的设计理念和差别,但对最原始的 Smalltalk MVC 和其他一些变种的阐述都还算比较到位。而且最后的广告植入毫无痕迹……
相比之下这篇文章结尾的广告就像电线杆子上的纸条,让人没有看的冲动……
我觉得 MVC 主要是把业务逻辑和数据,界面显示这些分离开来,让代码更好的可读性和可维护性,至于怎么分,分多细,甚至叫什么名字,对于不同的框架,不同的语言都需要根据自身的情况来设计,不管你是 MVC,还是 MTV,这都是实现的过程,最终的目的都是一样的。
楼上说的有道理,架构是抽象的。mvc 没有对实现细节进行描述,比如业务逻辑应该在哪一层。一个典型的复杂 web 应用也不能用 mvc 概括,因为这样会导致一个控制器几千行代码,太常见了。
软件开发没有银弹。 mvc 是一种抽象的分层。 在不同的场景,框架和语言实现中,根据需要进行分层就好。可以去掉 c,也可以去掉 v,问题都不大。
如果抱着 mvc 解决一切,不分场景的靠齐 mvc,试图 mvc 绝对化。那谁都救不了。
这类文章很多了,比如面向对象是个大误会,TDD 是个大误会,这些概念在诞生之初也就是为了解决具体问题诞生的,并没有说这就是解决问题的根本之道,后来的人把东西都往里套,结果套着套着发现不对,越来越麻烦,然后就写上一篇这样的东西出来。
个人认为也没必要分太清,主要逻辑搞清就好了。 有的时候写不清,理不清。 主要是跟着 mvc 走,把代码的理解力,逻辑性,安全性,方便了。 写的时候留心就好了。 也没必要把它弄死了。