最近浏览技术论坛时,偶尔遇到几篇讨论MVC以及时下比较流行的PO、VO话题的贴子。(http://forum.javaeye.com/viewtopic.php?t=627) 看到大家这样踊跃的发言我也想凑凑热闹。可惜,这个论坛注册后过10天才能发言... 那就到这里来写吧。。。
我发现,这些贴子都是讨论VO 是 M 还是 V 的东西。其实,我觉得没有必要这样。MVC这个模型理论出现有这样一个背景。就是当时很多应用,把显示、数据存储、模块定义等东西,都混在一个模块(页面)中,导致这样的应用难以维护和复用。MVC理论的提出就是为了在,这样的情况下使开发人员,注意到把应用分解。MVC提出时本身并没有非常精确的定义。如果你上网查找,准会得到一堆看似相同又不太一样的令人抓狂的解释与定义。不过我还是要在这里定义一下他在这里的意思。根据,上面提到的背景,我认为当时提出的MVC。只是把应用简单的安作用分解开。
C(Control)控制,表示控制部分(比如session bean ),但是我认为控制并不是只是指某些类。他小到可以指一个if语句,大到可以指一个组件,当然也应该可以指业务控制流程。
M(Module)模型、模式,这个是定义最模糊的部分。根据我的理解,因该指业务相关或整体结构。比如,整体的业务结构,某个数据结构,数据字典等。
V(View)视图,表示直接显示给用户看或者与用户直接交互的部分。
MVC提出的初衷很好,可惜的是他的定义过于模糊(也或者是学习者没有正确理解,比如我:>),不可量化比较。导致,一些号称是MVC的应用或框架还是有许多缺陷。在我看来,MVC并不是分层概念是他最大致命伤。
MVC之后,并没有正式提出跟有效的模型概念。但是,我以为开发人员现在所谓的多层应用的概念已经超越了MVC模型的概念,虽然它很大程度上源于MVC模型思想。多层应用的概念,是分层概念,虽然现在也没有明确的定义,不过它的实现可以量化比较出优劣。量化的尺度就是,层次与层次之间的耦合的紧密度。又,所谓的一个层次对其他层次的是否有“入侵“,以及入侵的程度。。。(待)
(以上纯属个人愚见)