作为程序员,也许MVC架构是我们最常听到的术语之一。所谓MVC是Model View Controller的缩写,意即模型-视图-控制器。
也许直接从字面上来理解还是会感到有些模糊,大家不要着急,请先跟我看一个例子,相信在看完例子之后,你会对MVC有个比较整体的认识。
1 word图表例子
在大家电脑都装有word软件吧
1.1 打开word,选择:插入=》图表=》柱状图=》簇状柱状图,确定。
1.2 点击确定后,会生成一个柱状图图表
上方是柱状图数据表格,下方是柱状图,柱状图准确的反映了表格数据。
1.3 然后点击选中整个柱状图,右键选择更改图表类型=》折线图
1.4 我们比较一下柱状图和折线图,其实,它们所对应的数据并没有改变,真正改变的是数据的表现形式,即柱状图和折线图,并且,当修改excel中的数据时,统计图会随着数据而改变。数据是唯一的,而数据可以用柱状图,折线图等形式来展现。
所以,我们把excel中的数据类比于模型,柱状图,折线图类比于视图,而将excel这样的编辑数据的工具类比于控制器,即模型-视图-控制器,模型是数据,视图是数据的展现方式,控制器负责模型和视图之间的交互。
小豆君刚刚举的是word中的例子,其实,在我们的生活中这样的例子也比比皆是。
例如,各种手机app,经常让用户更新版本,当打开新版本时,往往会看到一个更新颖,人性化,便捷的用户界面,而用户的资料信息,关注信息等都保持改变,只是数据的展示方式被改变了。讲到这里,我想大家对MVC也有了个整体的认识了吧。
2 数据唯一性
我们都知道,计算机最主要的功能就是储存数据和计算数据。而计算机中的数据就是0和1,因为计算机只认识0,1。它并不能像人一样可以认识十进制数,认识很多不同的事物,但是人却不认识0和1,或者说很难读懂0和1表示的事物。这是人和计算机最大的差别之一。
然而,计算机是要为人类服务的,它必须将它所认识的0和1转化成人类所熟知的数字,字符,图表等具体表象。这些表象能够形象的,或者说更加直观的为研究人员提供线索或是某种规律。
例如,我可以通过公众号后台查看到粉丝在全国的分布情况,或是男女比例,手机型号等数据。
如果公众号关联了两份不同的数据,在全国各地的粉丝总共1000人,而男女总和是900(850+50),那从我的角度来看,我该选择相信哪条数据。所以公众号的数据分析功能也就失去了意义,数据的可信度也会大打折扣。
同理,在软件开发中,如果你界面显示了两份数据,即使你很小心的维护着两份或多份数据保持同步,无论是存在缓存,文件或数据库中,但你也无法保证数据会时刻保持同步(例如,设计好的两张表中保存了同一份儿数据,当一张表的数据被更新,而另一张表却忘记更新),而且这种情况对于初学者来说也是时有发生。
所以保持数据的唯一性是一个非常重要的话题,而MVC就是这样的一个解决方案,让数据和展示数据的界面相分离,所有数据的更改就通过控制器来实现。
数据的唯一性这一标准大家一定要深深地刻在脑海中,无论你是使用MVC架构,C++中的const,设计模式中的单例模式等,都是用来保持数据唯一的有效手段,如果你能把这一标准保持好,我想你将会受益无穷。
好的,关于MVC的简单介绍就到这里了,下节小豆君将分享Qt中的MVC架构,帮大家理清MVC的来龙去脉,敬请期待吧!
更多分享请关注微信公众号:小豆君Qt分享,只要关注,便可加入C++\Qt交流群,一起学习