• MVC模式和三层架构


    MVC模式

      MVC(Model View Controller)是软件工程中的一种软件设计模式,它把软件系统分为模型、视图和控制器三个基本部分。用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。

    MVC 是一种分层开发的模式,其中:

    • M:Model,业务模型,处理业务,应用程序的核心功能,管理这个模块中用的数据和值(bean,dao)。
    • C:Controller,控制器,处理请求,调用模型和视图,对用户的输入做出反应,管理用户和视图的交互,是连接模型和视图的枢纽 (servlet/service)。
    • V:View,视图,界面展示,管理模型如何显示给用户,它是应用程序的外观(jsp/html)。
      在这里插入图片描述

      控制器(serlvlet)用来接收浏览器发送过来的请求,控制器调用模型(JavaBean)来获取数据,比如从数据库查询数据;控制器获取到数据后再交由视图(JSP)进行数据展示。在这个过程中,控制器其实只是起到了承上启下的作用,它只负责中转(指挥调度),不负责具体的业务操作。

    MVC 优点:

    • 职责单一,互不影响。每个角色做它自己的事,各司其职。
    • 有利于分工协作。
    • 有利于组件重用

    MVC 缺点: 使得项目架构变得复杂,对开发人员要求高

    三层架构

      三层架构(3-tier architecture) 是将我们的项目分成了三个层面,分别是 表现层(User Interface layer)业务逻辑层(Business Logic Layer)数据访问层(Data access layer)

    区分层次的目的即为了高内聚低耦合的思想。在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。
    在这里插入图片描述

    • 数据访问层:对数据库进行CRUD基本操作。
    • 业务逻辑层:对业务逻辑进行封装,组合数据访问层中基本功能,形成复杂的业务逻辑功能。例如 注册业务功能 ,我们会先调用 数据访问层selectByName() 方法判断该用户名是否存在,如果不存在再调用 数据访问层insert() 方法进行数据的添加操作。
    • 表现层:接收请求,封装数据,调用业务逻辑层,响应数据。

      而整个流程是,浏览器发送请求,表现层的Servlet接收请求并调用业务逻辑层的方法进行业务逻辑处理,而业务逻辑层方法调用数据访问层方法进行数据的操作,依次返回到serlvet,然后servlet将数据交由 JSP 进行展示。

    三层架构的每一层都有特有的包名称:

    • 表现层: controller 或者 web
    • 业务逻辑层:service
    • 数据访问层:dao 或者 mapper

    我们经常听到的SSM框架就是对不同层进行的封装:

    在这里插入图片描述

    三层架构优点

    1. 开发人员可以只关注整个结构中的其中某一层。
    2. 可维护性高,可扩展性高。
    3. 可以降低层与层之间的依赖。
    4. 有利于标准化。
    5. 利于各层逻辑的复用。

    三层架构缺点

    1. 降低了系统的性能。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。
    2. 有时会导致级联的修改,这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。
    3. 增加了开发成本。

    MVC与三层架构的联系

    在这里插入图片描述

      如上图上半部分是 MVC 模式,上图下半部分是三层架构。 MVC 模式 中的 C(控制器)和 V(视图)就是 三层架构 中的表现层,而 MVC 模式 中的 M(模型)就是 三层架构 中的 业务逻辑层 和 数据访问层。

    可以将 MVC 模式 理解成是一个大的概念,而 三层架构是对 MVC 模式实现架构的思想。 其实,无论是MVC还是三层架构,都是一种规范,都是奔着高内聚,低耦合的思想来设计的。

    MVC与三层架构的异同

    不同点

    • 三层架构是程序设计的一种典型架构方式,确立项目后首先做的是对其进行架构设计,三层架构就是把应用程序的分层,从而降低各个模块之间的耦合。而MVC是程序的一种设计模式,即应用程序确立架构后再根据需求决定是否要采用的一种模式, 是一种使程序代码变得条理、逻辑、通用的代码规范。因此二者的区别也就显现出来了,三层架构是一种架构方式而MVC是一种设计模式(或者说是一种设计思想)

    • 三层架构的分层模式是典型的上下关系,上层依赖于下层。但MVC作为表现模式是不存在上下关系的,而是相互协作关系。即使将MVC当作架构模式,也不是分层模式。MVC和三层架构基本没有比较的意义,是应用于不同领域的技术。

    相同点: MVC与三层架构虽然说实质是不同的,但在所达到的目的、所实现的效果是相同的,二者都是为了应用程序解耦,即使应用程序达到”高内聚,低耦合“的目的

  • 相关阅读:
    《动手学深度学习 Pytorch版》 4.3 多层感知机的简洁实现
    mac无法向移动硬盘拷贝文件怎么解决?不能读取移动硬盘文件怎么解决
    分布式—大量热点数据打散分布的一致性哈希算法
    Android assets
    spring源码 - @Condition原理及运用
    Spring笔记框架
    Java中的Map接口(Hashtable+LinkedHashMap)[77]
    Vue History模式的Nginx配置
    MySQL同步数据到Elasticsearch
    图像信号处理器及其架构演进
  • 原文地址:https://blog.csdn.net/qq_43751200/article/details/125599211