这些年,你对MVC是不是有点误解

Posted 一根筋都不缺的搬砖大汉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了这些年,你对MVC是不是有点误解相关的知识,希望对你有一定的参考价值。

分享我在编程中的设计观念,遇到的技术点,让我们在工作和生活中一起追求自由


这几年,自由的概念让我印象深刻,前不久看到一个词叫辞职自由。


对,我刚刚辞职。站在新公司小山丘前,我想别人在实现财务自由的时候,我在追求加班自由,加班时努力搬砖,同时也有不加班的自由,架构让我们自由。

01 致MVC



MVC是经典的设计思想,Java很多框架设计上将这三层做分离,工程师在框架的约束下,很自然地遵循了MCV设计模式。


然而在Qt平台下,进行界面开发时,要遵循MVC模式全靠自觉,而且可能存在原则上的错误。毕竟上周,我们的小王同学就尝试MVC失败了,毕业两年的小伙又被上了一课。


从一次技术实现开始

小王同学要做一个功能,实现系统时间格式设置。

他做了一个格式调整界面,当用户点“保存”按钮时,获取新的格式,存储到数据库,并通知相关的模块,更新系统时间的显示。


小王同学的设计是这样的。

这个实现,PresetDialog承担了ViewController的职责,那谁是Model呢,不是存储对象SystemPresetProvider,也不是关联模块SystemTimer


这两年对MVC的误解

小王同学谈到这个实现时,说到了MVC,他对MVC的误解在于:Model只是数据,Controller中需要处理业务。


Model是数据和业务的封装,我们修改设计,蓝色部分就是Model,通常Controller在收到ui事件后,只需要简单调用Model的接口即可。

这些年,你对MVC是不是有点误解

按照目前的架构,Model可以作为软件平台化代码。


或者有些同学会问,为什么ViewController都放在了PresetDialog中。


这样的设计选择依靠经验,方便功能实现,且没有副作用,不会带来错误的依赖关系。

PresetDialog是ui相关的类,它依赖ui控件,ui控件发出信号直接传递到PresetDialog的槽函数中,槽函数的实现即Controller




如果觉得文章有用请关注我,点击下方“在看”让更多人看到




推荐文章:


以上是关于这些年,你对MVC是不是有点误解的主要内容,如果未能解决你的问题,请参考以下文章

你对集群以及负载均衡的了解有多少?

你对天天挂在嘴边的高并发,怕是有什么误解吧?

你知道这5年我怎么过的吗!谈谈我做测试开发的这些年……总结

20191006 超级聊天术

那些年纠结过得各种屏幕高度和宽度

火!2021年精心整理的 Spring MVC常见面试题(超详细回答)