文章目录

  • MVC三层架构详解
  • 一、MVC是什么?
    • 1.什么是低耦合?
    • 2.低耦合有什么好处?
    • 3.增加代码复用率
    • 4.部署快,且生命周期成本低
    • 5.可维护性高
  • 二、MVC详解
    • 1.MVC经典模式
    • 2.MVC设计模式和MVC框架的区别

MVC三层架构详解

本文详细介绍MVC三层架构


一、MVC是什么?

MVC实际是一种软件构件模式。它被设计的目的是为了降低程序开发中代码业务的耦合度。并且实现高重用性。增加代码复用率。部署快,且生命周期成本低,可维护性高也是MVC模式的特点。

1.什么是低耦合?

举个简单的例子:

从学程序之初,听到很多遍的一个名词就是低耦合。为什么一定要强调低耦合?我曾经听到过一个这样的说法,对于编程人员来说,喜欢米饭大于喜欢面条。为什么这么说呢,是因为面条经常是拌着卤汁吃,卤汁和面混淆在一起,你只能选择吃或者不吃。即使你不喜欢这个卤汁,你也无法把面条和卤汁一分为二,再换一个口味的卤汁过来。而米饭则不会有这种限制,因为米饭和菜往往是分开放的,即使你不喜欢吃面前的菜,那你完全可以换一个菜来吃。这就是低耦合。

2.低耦合有什么好处?

初学者往往不能体会到低耦合的好处,很难理解低耦合对于程序开发的重要性。

低耦合的好处在于,程序在开发中对于业务进行分层,各司其职,互不干扰,但又紧密结合,互相依赖。这样,无论是后期的调试,维护,还是二次开发,都能带来极大的便利。学过计算机网络的人应该知道TCP/IP协议,它把不同网络之间传输信息的过程从上到下分为四个层次,四个层次分别对不同的功能提供服务,可以说它们之间的业务是互不相干的。但是他们四个层次组合在一起才构成了整个TCP/IP协议,才实现了不同计算机之间的通信,四个层次缺一不可。假设现在想要对某个层次的功能进行扩充,那么我只需要去找到这一层就行,而不需要去改动整个四层模型。同样的道理,放在程序开发中也是一样的。低耦合的开发模式往往需要对整个业务实现分层开发,这样即使后期调试的时候发现了问题,那么问题出现在哪一层是非常清晰可见的。我们可以直接去找到该层进行二次调试,查找BUG。如果要扩展功能也只需要在各个层次之间添加上实现新功能的业务即可。如果不采用这种低耦合的分层开发,试想一下,所有的代码都放在一个Java文件当中,稍微复杂一点的项目都可能要几万十几万行代码。那么如果项目出了BUG该怎么在这十几万行代码中精准的找到错误将是一个巨大的工作量。而对于分层开发的项目来说,每个业务逻辑都清晰可见。那么调试和维护,以及二次开发时就大大减少了不必要的麻烦。

3.增加代码复用率

学习编程最初至今,你应该总会听到代码复用率这个名词。那么MVC是怎么实现增加代码复用率的?其实很好理解,假设现在车子的轮胎爆掉了,那么要去修理的话最多只需要换一个配套的轮胎,配套的轮胎很好找,因为车企总是有很多代工厂去生产这些配件。也有很多的汽修店可以满足我们的需要,我们不必再专门自己造一个轮胎。对于开发中的增强代码复用来说原理是类似的,因为我们使用了分层开发,那就意味着,别人造好的轮子,写好的方法,我只需要引进来就可以使用了,就不必再亲自实现这些方法。例如你现在写了一个登陆功能,写了SQL语句,要根据用户名和密码查询。那么在后台管理的时候,我们可能需要对用户信息进行列表展示。那么这个方法完全可以复用,实际开发中,显示所有信息和模糊查询信息往往都是只有一个方法来实现。而不是一个功能一个方法。这样就实现了代码的复用。

4.部署快,且生命周期成本低

MVC使开发和维护用户接口的技术含量降低。使用MVC模式使开发时间得到相当大的缩减,它使程序员(Java开发人员)集中精力于业务逻辑,界面程序员(HTML和JSP开发人员,前端工程师)集中精力于表现形式上。即,真正意义上实现了前后端分离开发。实现专业的人员干专业的工作,大大缩短开发周期。

5.可维护性高

分离视图层和业务逻辑层也使得WEB应用更易于维护和修改。


二、MVC详解

1.MVC经典模式

M:

在经典MVC模式中,M代表的是模型,表示的是业务规则。在项目开发中,M代表的是实体模型,和service服务层,以及对数据库进行操作的dao层和它的实现类daoimpl层

V:

在经典模式中,V代表的是视图层,即直接和用户进行交互操作的页面就是视图层,无论是MVC经典模式还是在框架中(例如:SpringMVC),V的定义一直是最清晰直观的。在Servvlet-JSP技术开发中,V就代表的是JSP页面。

C:

C代表的是控制层,即控制请求转发和响应的层次。在经典MVC开发模式中C就是Servlet,它决定了我们的视图层传过来的数据和请求要传给业务层的哪一个方法来实现,并负责获得业务层处理请求完之后的返回值传回前端。在MVC框架中,C往往是Controller来充当。

2.MVC设计模式和MVC框架的区别

需要注意的是,MVC设计模式和MVC框架并不相同,初学者往往会觉得MVC就囊括了MVC框架。其实不然。
区别:

框架通常是代码重用,而设计模式是设计重用,架构则介于两者之间,部分代码重用,部分设计重用,有时分析也可重用。

框架与设计模式虽然相似,但却有着根本的不同。设计模式是对在某种环境中反复出现的问题以及解决该问题的方案的描述,它比框架更抽象;框架可以用代码表示,也能直接执行或复用,而对模式而言只有实例才能用代码表示;设计模式是比框架更小的元素,一个框架中往往含有一个或多个设计模式,框架总是针对某一特定应用领域,但同一模式却可适用于各种应用。可以说,框架是软件,而设计模式是软件的知识。

根据天极网资料显示:基于Web的MVC framework在J2EE的世界内已是空前繁荣,TTS网站上几乎每隔一两个星期就会有新的MVC框架发布,比较好的MVC,老牌的有Struts、Webwork。新兴的MVC 框架有Spring MVC、Tapestry、JSF等。这些大多是著名团队的作品,另外还有一些边缘团队的作品,也相当出色,如Dinamica、VRaptor等,这些框架都提供了较好的层次分隔能力,在实现良好的MVC 分隔的基础上,通过提供一些现成的辅助类库,同时也促进了生产效率的提高。 ———-《百度百科》