MVC与web三层架构

  有很多人对于MVC的设计模式与web三层架构混为一谈,其实二者没什么关系。(三层架构:表述层(WEB层)、业务逻辑层(Business Logic),以及数据访问层(Data Access))。

一:1.什么是模式

设计模式概念是由六七十年代的建筑设计师Christopher Alexander提出的, 他认为: “每一个模式描述了一个在我们周围不断重复发生的问题、 以及该问题解决方案的核心。 这样, 你就能一次又一次地使用该方案而不必做重复劳动。

设计模式(Design Pattern)是前辈们对代码开发经验的总结,代表了最佳的实践是解决特定问题的一系列套路。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。

简单的说就是前人总结好的实例,就是代码的样子。

2.java有哪些设计模式

创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
感兴趣的话,自己仔细研究,本文只做概述。

3.MVC是什么设计模式

GoF(Gang of Four,四人组,《Design Patterns: Elements of Reusable Object-Oriented Software》/《设计模式》一书的作者:Erich Gamma、Richard Helm、Ralph Johnson、John Vlissides)并没有把MVC提及为一种设计模式,而是把它当做“一组用于构建用户界面的类集合”。在他们看来,它其实是其它三个经典的设计模式的演变:观察者模式(Observer)(Pub/Sub),策略模式(Strategy)和组合模式(Composite)。根据MVC在框架中的实现不同可能还会用到工厂模式(Factory)和装饰器(Decorator)模式。

也就是说MVC并不在23中设计模式中,mvc属于构架模式,一个构架往往用到多个设计模式。除了MVC架构模式,还有MVP,MVVM架构模式等。

4.为何要使用MVC

MVC模式最主要精神之一就是ModelView的分离 这两者之间的分离可使网页设计人员和程序开发人员能够独立工作、 互不影响, 从而提高了开发效率和维护效率。除此之外, 将模型层的数据处理建立成许多组件, 增加了程序的可复用性、 增进了系统功能的可扩展性; 将业务流程集中在控制层, 增强了程序流程的清晰度.

5.MVC各层的作用

Model(模型) 层
是应用系统的核心层, 负责封装数据和业务逻辑操作, 模型层可以分为数据模型和业务模型。 数据模型用来对用户请求的数据和数据库查询的数据进行封装; 业务模型用来对业务处理逻辑进行封装。(这个层现在知道可以放daoJavaBean。JavaBean是如果我一次要取10个数据,封装起来,就可以放在javaBean中。)
View (视图) 层
视图提供模型的表示, 它是应用程序的外观, 是直接和用户交互的界面。它一方面向用户显示相关的数据, 另一方面用来接收用户的输入数据,提交给控制器处理。HTML css js jsp这些都是视图层的。

Controller(控制器) 层
主要的工作就是控制整个系统处理的流程, 控制器对用户的请求做出处理。 它创建并调用模型的相关数据业务处理方法, 选择相应的视图返回给客户端。

(例如:servlet在MVC模式中就是一个控制器,核心功能就是处理请求,把视图层的请求发给servlet,servlet就可以处理请求,使用getParameter()取到前端发来的数据。处理数据交给dao,这是模型层。Dao处理完了,处理的结果,返回值。结果给servlet.servlet根据结果选择一个合适的视图,给用户生成相应。

总的来说, MVC处理过程为: 首先控制器接收用户的请求, 并选择相应的模型去处理; 模型根据控制器的调用进行相应的业务处理逻辑,并返回数据给控制器; 最后控制器选择相应的视图将数据显示给客户端用户。
 

二:1.关于三层架构:

我们常说的三层架构是由JavaWeb提出的,也就是说这是JavaWeb独有的! 所谓三层是表现层(WEB层)、业务逻辑层(Business Logic),以及数据访问层(Data Access)。 开发中更多的是用到三层架构。很少提及MVC。

2.三层架构各层的作用

三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想。

1、表现层(UI,也称用户接口层):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。

2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。

3、持久化层(数据层DAL):其功能主要是负责数据库的访问,可以访问数据库系统、二进制文件、文本文档或是XML文档。简单的说法就是实现对数据表的Select,Insert,Update,Delete的操作。如果要加入ORM的元素,那么就会包括对象和数据表之间的mapping,以及对象实体的持久化。

概述:

在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。

3.三层架构各层详细说明与原理

3个层次中,系统主要功能和业务逻辑都在业务逻辑层进行处理

所谓三层体系结构,是在客户端与数据库之间加入了一个“中间层”,也叫组件层。这里所说的三层体系,不是指物理上的三层,不是简单地放置三台机器就是三层体系结构,也不仅仅有B/S应用才是三层体系结构,三层是指逻辑上的三层,即使这三个层放置到一台机器上。

三层体系的应用程序将业务规则、数据访问、合法性校验等工作放到了中间层进行处理。通常情况下,客户端不直接与数据库进行交互,而是通过COM/DCOM通讯与中间层建立连接,再经由中间层与数据库进行交互。

表示层

位于最外层(最上层),离用户最近。用于显示数据和接收用户输入的数据,为用户提供一种交互式操作的界面。
业务逻辑层

业务逻辑层(Business Logic Layer)无疑是系统架构中体现核心价值的部分。它的关注点主要集中在业务规则的制定、业务流程的实现等与业务需求有关的系统设计,也即是说它是与系统所应对的领域(Domain)逻辑有关,很多时候,也将业务逻辑层称为领域层。例如Martin Fowler在《Patterns of Enterprise Application Architecture》一书中,将整个架构分为三个主要的层:表示层、领域层和数据源层。作为领域驱动设计的先驱Eric Evans,对业务逻辑层作了更细致地划分,细分为应用层与领域层,通过分层进一步将领域逻辑与领域逻辑的解决方案分离。
业务逻辑层在体系架构中的位置很关键,它处于数据访问层与表示层中间,起到了数据交换中承上启下的作用。由于层是一种弱耦合结构,层与层之间的依赖是向下的,底层对于上层而言是“无知”的,改变上层的设计对于其调用的底层而言没有任何影响。如果在分层设计时,遵循了面向接口设计的思想,那么这种向下的依赖也应该是一种弱依赖关系。因而在不改变接口定义的前提下,理想的分层式架构,应该是一个支持可抽取、可替换的“抽屉”式架构。正因为如此,业务逻辑层的设计对于一个支持可扩展的架构尤为关键,因为它扮演了两个不同的角色。对于数据访问层而言,它是调用者;对于表示层而言,它却是被调用者。依赖与被依赖的关系都纠结在业务逻辑层上,如何实现依赖关系的解耦,则是除了实现业务逻辑之外留给设计师的任务。

数据层

数据访问层:有时候也称为是持久层,其功能主要是负责数据库的访问,可以访问数据库系统、二进制文件、文本文档或是XML文档。
简单的说法就是实现对数据表的Select,Insert,Update,Delete的操作。如果要加入ORM的元素,那么就会包括对象和数据表之间的mapping,以及对象实体的持久化。

4.关于三层架构的补充与实际应用

在实际的开发中,因为项目的大小不同,分层会有表现上的差异,比如业务逻辑层会分层几层 controller dm BLL。而dao层可能也分为两部分,要灵活使用。

 

三1.三层架构与MVC有关系吗

三层架构与MVC毫无关系三层是基于业务逻辑来分的,mvc是基于页面来分的。

三层是从整个应用程序架构的角度来分的三层(如果程序需要,还可以分多层)。

三层是为了解决整个应用程序中各个业务操作过程中不同阶段的代码封装的问题,为了使程序员更加专注的处理某阶段的业务逻辑。

比如将数据库操作代码封装到一层中,提供一些方法根据参数直接返回用户需要的相应数据,这样在处理具体的业务逻辑的时候,就不用关心数据的存储问题了。

MVC是在应用程序(BS结构)的视图层划分出来的不同功能的几个模块。

MVC主要是为了解决应用程序用户界面的样式替换问题,把展示数据的 HTML 页面尽可能的和业务代码分离。MVC把纯净的界面展示逻辑(用户界面)独立到一些文件中(Views),把一些和用户交互的程序逻辑(Controller)单独放在一些文件中,在 Views 和 Controller 中传递数据使用一些专门封装数据的实体对象,这些对象,统称为Models。

只所以说MVC和三层毫无关系,是因为它们二者使用范围不同:三层可以应用于任何语言、任何技术的应用程序;而MVC只是为了解决BS应用程序视图层各部分的耦合关系。它们互不冲突,可以同时存在,也可根据情况使用其中一种

但是他们有相同的设计理念:把视图设计与数据持久化进行分离,从而降低耦合性,易于扩展,提高团队开发效率。

2..MVC与三层架构的对应关系,图示如下:

MVC与web三层架构_第1张图片图片转自https://blog.csdn.net/weixin_42153410/article/details/90753696

四:SSM与三层架构的关系:

SSM即Spring+SpringMVC+MyBatis框架

SpringMVC作为View层的实现者,完成用户的请求接收功能。SpringMVC的Controller作为整个应用的控制器,完成用户请求的转发及对用户的响应。

MyBatis作为Dao层的实现者,完成对数据库的增删改查。

Spring以大管家的身份出现,管理所有Bean的生命周期,即整个应用中所有对象的创建、初始化、销毁,以及对象间关联关系的维护均由Spring管理。

MVC与web三层架构_第2张图片

 

你可能感兴趣的:(模式与架构)