【文章摘要】在软件设计里面,也流行着一种三权分立的架构模式,它就是MVC,看仔细咯,不是最有价值球员的那个MVP喔,它是Model、View和Controller的首字母缩写,具体有什么作用呢?让我一一给你道来。
【相关推荐】
『纸牌屋』第四季终于放出来了,虽然我没来得及刷,还是先请『下木』总统来给我站一下台。『纸牌屋』里面的大部分情节讲得都是总统、国会和法院之间的斗争,而这三者也构成了美帝引以为傲的三权分立制度,将国家的行政、司法和立法三种权力分离开来,互相独立也互相制衡,最后推动国家机器的平稳运转。
在软件设计里面,也流行着一种三权分立的架构模式,它就是MVC,看仔细咯,不是最有价值球员的那个MVP喔,它是Model、View和Controller的首字母缩写,具体有什么作用呢?让我一一给你道来。
Model,也就是模型,它主要是用来表示一些数据结构以及数据的存取,也可以认为是数据层。比如说要存储一个用户信息,那么就可以定义一个Model,包含的字段有用户的昵称、ID、密码、性别等等,然后将数据填充后,存储在数据库中。
View,也叫视图,它就是我们肉眼所见到的那些UI样式,程序猿负责将Model中的数据按照UI设计师的要求,把各项字段展示在用户界面上。
Controller,这是控制器,它是Model与View之间的桥梁,负责处理数据与视图之间的一些逻辑关系,从数据层来的数据,并不是直接扔在UI界面上,有的还需要经过一些包装;同样的,用户从View界面上提交的一些数据,也不能立即存放在数据库中,中间需要Controller来做一些例如校验、筛选的处理,最后将我们认为合理的数据存储起来。
看着头晕了吗?我再来举个栗子吧,就拿一个不存在的网站的账号注册来说说吧~
首先看Model,我们需要用户的Email地址、昵称以及密码,那么设计如下这样一个model,这样数据层的设计就搞定了。
然后就是View,我们给出一个表单样式,让用户可以输入他的Email、昵称和密码,同时还要让他答应我们的用户协议,最后再给出一个提交按钮,那么View的设计也解决了。
最后就是Controller了,用户提交的数据,不一定是完整有效的,因此我们需要在Controller层去做一些校验。例如:Email字段填入的不是合法的Email地址、用户名字段使用的用户名已经被人注册了、密码设置的长度不够、没有同意我们的用户协议等等,很多产品的逻辑都放在了Controller层来处理了。
这样做有什么好处呢?它将软件系统中的UI、逻辑处理和数据分离开来,各自完成独立的功能而不相互影响。比如说,哪天心血来潮,要换将数据库软件从MS SQLServer换成MySQL Server,只用更改Model层就好了,View和Controller完全没有影响;或者说,想改一下某个表单的处理逻辑,改Controller就行来,用户界面和数据存储看上去一点都没有改变。
这样应该不会头晕了吧?好了,我要去刷『纸牌屋』了,详细的学习一下美帝的MVC~