浅谈MVC设计模式

401 阅读3分钟

MVC

在软件设计中,我们经常能看到架构模式,也就是整体设计规划。这是一个很笼统的概念,我曾经学习过PMP项目管理方法,在看阮一峰老师谈谈MVC模式的博客时,惊奇地发现,其实这就是结构化工作的方法论啊

mvc一共分成三层:

  • model(数据模型)
  • controller(控制)
  • view(视图)

总的来说,这种模式将三种层面进行糅合,但是这三层相对又是各自独立的,于是就保证程序各自不受影响,让程序能够更好地维护和升级。

我把上面那称之为分工管理

实际上就跟我们工作一样,为什么有些人工作能力、效率很高,有些人工作却总觉得很杂呢?一方面是由于软件相关行业的工作并不像流水线,大家基本都会互相沟通来推进一件事情,大量的互动,造成代码五分钟,需求一小时地情况。另一方面,同样也是因为缺乏结构化地工作,我觉得如果要看一个人是不是结构化工作,可以看这个人的电脑桌面是否归类合理,这体现一个人工作的控制力度。

扯得有些远,拉回到mvc模式,这个模式就分工非常明确:数据层统管数据流通、视图层掌握外部界面,控制层则通过某些操作来影响数据层的流通,从而带动视图层的结果发生改变,一切非常平滑。

举个例子:

比如在现实中,有一个计算器,我们可以看到视图层跟控制层的界面,内部数据我们是看不到的,当我们按按钮时,计算器的界面会进行变化,帮助我们运算并反馈出结果。

它们之间的通信时这样的 所有数据都是单向互动,由视图层影响控制层,控制层影响数据层,最后数据层的数据流动改变视图层。

互动模式

接受用户指令时,有两种模式

第一种是用户通过向view,向controller发送指令,再影响到model层

第二种是用户直接通过controller指令,影响model层,再影响到view层

设计模式

由于计算机是一门人造科学,而不是自然科学,很多知识都是基于人的实践后摸索出方法论,例如jquery的适配器、重载等理论,这些都是计算机的“黑话”,设计模式亦是如此。

总的来说,这是一种思想,代表着全世界程序员们对于这门科学的思考、总结、优化。

延申

如果说把mvc解释成外观、机制、数据,那么社会上很多机构都是这样的。

例如一个书店,所有的书架都是外观层,放置书的仓库就是数据层,人们可以通过买书、卖书等操作机制,对仓库的数据进行分配,最后体现在外观层,卖得多了,书架上的书就少了。

我所从事的政府行业,每个机关科室分工明确,各司其职。同样也是mvc模式

延伸到人体细胞、器官等也同样属于mvc模式。