刚买了计时器,这篇尝试在 15 分钟内写完。
首先啥是 MVC 架构,国内有很多实践,有些在我看来跟 MVC 其实没啥关系了,Controller或者View或者Model都是业务胶水,就是名义上分成这样几个模块而已。
MVC 我的理解中是这样的:
- M 是业务模型,主管业务的数据模型的定义和变更逻辑,换个角度理解其实就是我们平时开发的业务逻辑代码、数据访问都属于 M,Model 指的是业务模型不是数据库。
- V 是视图层,前后端不分离的时候就是HTML模板,分离的时候包括前端的UI和渲染UI需要的数据接口。
- C 其实是和视图层一起的,用户直接接触到的除了渲染出来的数据,还有交互。把V看成输出,C就是输入,定义的是用户的操作,包括前端的UI(按钮、表单)和对应的后端业务接口。
网站还是一把梭的前后端不分离或者单机GUI应用模式下不怎么会关注到UI和业务之间的衔接,前端和后端开发也分得不那么开,MVC 架构还是有一定的参考价值的,因为很明确地提出了UI渲染和 业务逻辑分离,俗话说软件工程遇到问题都可以通过分层解决,MVC提出的那个时代里MVC就是个很有意义的开创。
实际上到现在也还是,不同的是以前业务模型 M 还不是很膨胀,但现在 M 已经膨胀到需要再另外分层了,于是就又有了 DDD 之类的架构模式针对业务模型进行分层设计,尝试 在不停变动的业务里找到不变的东西。
最后关于 MVC 实际实践,我个人看法中 C 指的是遥控器那样的用户交互界面,包括 UI 和接口,然而很多公司实践中是把 Controller 当成业务胶水用的,也就是 View 层实际承担了 MVC 中的 View 和 Controller 作用,这些公司实践中的 Controller 和 Model 则担起 MVC 中的 Model 作用。
这种 MVC 其实是变现实现了原来的 MVC 意图,虽然很怪但是能跑。
时间到,就到这里。