码迷,mamicode.com
首页 > Web开发 > 详细

三层架构与MVC & 设计模式的较量

时间:2014-05-15 01:18:34      阅读:415      评论:0      收藏:0      [点我收藏+]

标签:设计模式   架构   架构设计   mvc   框架   

刚刚学习了三层架构,而且正在实际应用中,但随着学习的深入,又了解到了一个叫MVC的东西,(早在设计模式中就听到过MVC,只是简单查了一下什么意思.)现在正好把这三个东西放在一起聊聊.

 

三层

是一个分层式的软件体系架构设计,它可适用于任何一个项目。

它是从整个应用程序架构的角度把程序分为三层UI,BLL,DAL当然如果程序需要,还可以分多层)。三层是为了解决整个应用程序中各个业务操作过程中不同阶段的代码封装的问题,为了使程序员更加专注的处理某阶段的业务逻辑。比如将数据库操作代码封装到一层中,提供一些方法根据参数直接返回用户需要的相应数据,这样在处理具体的业务逻辑的时候,就不用关心数据的存储问题了。

详见

http://blog.csdn.net/u010028869/article/details/24711163

 

MVC

全名是Model ViewController,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,

它强制性的使应用程序输入处理输出分开。使用MVC应用程序被分成三个核心部件:模型视图控制器。它们各自处理自己的任务。

     Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。

                通常模型对象负责在数据库中存取数据。

     View(视图)是应用程序中处理数据显示的部分。

               通常视图是依据模型数据创建的。

     Controller(控制器)是应用程序中处理用户交互的部分。

              通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。

 

MVC 分层有助于管理复杂的应用程序,因为可以使我们在一个时间内专门关注一个方面。例如,可以在不依赖业务逻辑的情况下专注于视图设计。同时MVC使应用程序的测试更加容易。

 

MVC和三层架构是不同的

(就表面知识来说)

三层架构是界面层(UI)业务逻辑层(BLL)和数据访问层(DAL)构成的,而MVC是模型层(M)界面层(View)和控制层(Controller)构成的,而且他们之间也不是一一对应.

如果硬要给他们对应的话,那么三层架构中的UI对应MVC中的viewjsp),都是用于显示以及获取界面的数据;三层架构中的BLL层和DAL层对应MVC中的Modeljavabean)层都是用于处理上层传递来的数据以及从数据库获取的数据的;MVC中的ControllerServlet)最多算是三层架构中的UI的一部分,也就我们常说的是Servlet

如下图所示:

                    bubuko.com,布布扣

 

MVC和三层架构是相同的

(就他们的目的来说)

先驱们为什么会设计出MVC和三层架构呢?它们有这一个共同的目标!----分层,解耦!

从解耦的角度来看三层架构和MVC其实他们是一致的,只不过划分的方法不一样罢了。这馒头和面条,表面上看他们不一样但是他们核心是一致的,都是面……

 

三层&MVC与设计模式的较量

首先MVC不是设计模式,它同三层一样都是架构级别的,是一种架构模式.

 

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

 

总而言之:框架是大智慧,用来对软件设计进行分工;设计模式是小技巧,对具体问题提出解决方案,以提高代码复用率,降低耦合度。

虽然MVC的学习还没开始,先提前接触下,有什么错误的地方请指正!

 

 

 

 

 

三层架构与MVC & 设计模式的较量,布布扣,bubuko.com

三层架构与MVC & 设计模式的较量

标签:设计模式   架构   架构设计   mvc   框架   

原文地址:http://blog.csdn.net/u010028869/article/details/25834751

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!