自从某年某月某日,某个组织宣称MVC的出现时(当然在此之前它已经存在了很多年),人们开始关注这个让人兴奋的词,不多久,它就一跃成为程设界家喻户晓的明星,被挂在了众多初学者、招聘者乃至各种商业机构的嘴上。
记得有人说过,一旦一个东西变成概念,那大众的眼睛就很容易被迷惑,那在这个万众追捧的神奇缩写背后又隐藏着什么呢?
MVC是什么
这种刨根问底的问题很容易让人一时不知所措,因为表象的认识往往让人忽略了看似简单的答案。当然更会有很多人知道那个流行的答案:MVC就是Model-View-Controller的缩写,是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。
上面的解释不假,但它只是MVC表象的定义,而恰恰就是这个表象定义,让诸多初学者有了对神的敬畏。但是神真的存在吗?真的那么让人生畏吗?今天就让我们来找回答案。当然最根本的问题就是:
MVC到底是什么
这要从我们的计算机系统体系结构说起,不管是我们熟知的冯诺依曼体系还是注重并行的哈佛体系等等其它体系结构,其最根本的任务就是,处理器/程序把数据加工后呈献给用户。说到这,聪明的你也许已经知道了,这个最基本的体系才是我们今天的重点:
MVC实质是人类活动最基本的活动原子。
活动原子
活动原子是一个相对概念,代表了一个完整的处理过程,它在自己的领域内可被划分为输入、输出及方法三个不可拆分、不可孤立的元素,它是人类活动的最本质表现。
活动原子作为一个最基本的抽象,它具有递归性(即道生原理,详见道法归一――BeijingOpenParty
November:Attraction From Autumn Wind(秋风引)纪要)。每个活动原子都有一个领域层次,一个领域层次是上层领域的元素,以此类推。一个复杂的活动可以分解为一个基于递归的多领域活动原子(领域递归的活动原子)。
我们都知道,计算机是人类创造出来用于能力延伸的,其本质还是人类活动,那么我们的系统同样可以被分解为一个领域递归的活动原子。这就是MVC。
比如,一个系统从顶层被划分为数据层、控制层、视图层,这是顶层领域的MVC设计(某个组织甚至某类人一直在追捧的其实仅仅是这一个领域),而各层的领域内,又划分出各自的数据层、控制层、视图层(例如数据层的数据库同样具有文件系统、RDBMS、SQL接口),一个系统的架构并不是(也不能)是平板的(即只有顶层的MVC),而是一个领域递归的立体系统。
MVC是系统设计的氧气,是不可或缺的指导思想,拿MVC来说事骗钱的都应该被唾弃。