好奇 MVC 运作方式?

这几日因为频繁的在网上看 MVC (PHP) 和亲自实作了一些脚本,还有看Laravel
发现MVC都是一个文件中会去找许多的FUNCTION
然后甚至FUNCTION再去找FUNCTION
这跟写在同一个页面有哪些差别?
难道这样速度不会变慢吗?

因为这样当它读取了这个FUNCTION脚本时(一开始的ROUTER)
然后透过这个ROUTER再去找第二个甚至后面好几个FUNCTION
这样它不就是会一直去找其他脚本然后最后再RETURN回来
还是说其实这样速度才会快?

所以宁愿是几十几百个文件,但是每个文件里面的脚本只有十几行、几十行
但若要完成某一个购物车功能他可能会 autoload 十几个文件里面的FUNCTION,最后每个FUNCTION 它们RETURN回来才会变成一个完整购物车(包含VIEW)
用这样来细分,这样执行速度反而比较快吗?

阅读 3.3k
4 个回答

简单来说,引入MVC相当于一种最佳实践,它的目的并不是,而是要给业务做梳理建模和角色分解,约定不同的关注点,也有利于面向对象的设计。就像低级语言和高级语言的关系,理论上前者(直接写汇编或机器码)有可能更快,后者通过编译会浪费一部分性能,但是高级语言大大拓宽了开发的想象力,以前可能大佬坐个飞机才写出来的程序,现在找十个光头码农也写的出来,原因就在于高级语言将聚焦点更多的放在了程序逻辑而不是硬件限制上(这就解放了生产力)。同样的MVC模型做的也是这个事,它是将控制器、模型和视图相互分离,代表了最基础的分层思想,是解决复杂问题的一个经典策略(IT领域里有很多分层策略的体现,比如OSI的7层模型和TCP/IP协议栈的4层模型就是典型个例);另外它其实也是一种约定,即任何遵从MVC模型(可能用了框架也可能没用)搭起来的程序,你只要按照“从 控制器 获得用户输入,控制 模型 变更,并引发 视图 更新”这个流程找下去,就能大致理解程序的主要工作逻辑,所以相比大段大段的Function,MVC在组织大型程序上会更有优势,这就是为什么要用它的理由。

MVC是一种设计典范,目的不是使代码变快,只是帮助管理复杂的应用程序,让应用流程规范可控。
甚至直接可以说采用MVC模式的框架绝对不会比单文件快。
对现代追求敏捷开发的程序员来说,相比MVC模式来带的好处这点额外开销实在可以忽略不计

MVC 主要是把数据层和业务层和视图层分离的。MVC从根本上强制性的将它们分开。
这样的优点是:
1.提高代码重用率;
2.提高程序的可维护性;
3.有利于团队开发;
并不是让代码变快的作用。

MVC其实可以说是一种设计模式了,它的分层有助于管理复杂的应用程序,可以在一个时间内专门关注一个方面。例如,在不依赖业务逻辑的情况下专注于视图设计。同时也简化了分组开发,企业开发中不同的开发人员可同时开发视图、控制器逻辑和业务逻辑。这样效率更高。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题