• 前序
    • 慢慢理解世界,慢慢更新自己

参考博客

  本文中的所有内容大部分来源于网络资料,如有侵权请联系本人修改或删除,请大家多多支持原创!非常感谢!

MVC

MVC 基本模型

  MVC(Model-View-Controller)是一种软件设计模式,旨在将应用程序分为三个主要组成部分:模型(Model)、视图(View)和控制器(Controller)。以下是MVC 模型的基本概念和职责的总结:

  1. 模型(Model)

    • 定义数据和业务逻辑: 模型表示应用程序的数据和业务逻辑。它包括应用程序的数据结构、数据库连接、以及对数据的操作和更新方法。
    • 独立于用户界面: 模型是与用户界面无关的部分,它专注于处理应用程序的数据和业务规则。
  2. 视图(View)

    • 负责显示用户界面: 视图负责显示用户界面,向用户呈现数据。它通常包含用户看到和与之交互的元素,如按钮、文本框等。
    • 观察模型的变化: 视图观察模型的变化,以便及时更新用户界面。
  3. 控制器(Controller)

    • 处理用户输入: 控制器负责处理用户的输入(例如点击按钮、输入文本),并根据这些输入来更新模型或视图。
    • 连接模型和视图: 控制器充当模型和视图之间的中介,确保二者之间的同步。它将用户输入转换为对模型的操作,同时更新视图以反映模型的变化。
  4. 模型-视图-控制器的交互

    • 模型通知视图: 当模型的状态发生变化时,模型通知相关的视图进行更新。
    • 用户交互引发控制器动作: 用户的交互通过控制器进行处理,控制器可能会对模型进行相应的操作。
    • 控制器更新模型和视图: 控制器更新模型,以便反映用户输入的变化,并通知相关的视图进行更新。
  5. 分离关注点(Separation of Concerns)

    • 可维护性和扩展性: MVC 模型通过分离关注点,使代码更具可维护性和扩展性。模型、视图和控制器各自关注特定的责任,有助于减少代码的耦合度。

总体而言,MVC 模型通过将应用程序划分为三个独立的组件,使得数据、用户界面和业务逻辑之间的关系更清晰,从而提高了代码的可维护性和可扩展性。

控制器(serlvlet)用来接收浏览器发送过来的请求,控制器调用模型(JavaBean)来获取数据,比如从数据库查询数据;控制器获取到数据后再交由视图(JSP)进行数据展示。

MVC 模型的优缺点

优点:

  1. 分离关注点(Separation of Concerns):

    • 优点: MVC 模型通过将应用程序划分为模型、视图和控制器三个独立的组件,使得关注点分离更为明显。这有助于提高代码的可维护性、可扩展性和可重用性。
    • 应用场景: 适用于大型和复杂的应用程序,其中不同的组件可以独立开发、测试和维护。
  2. 可测试性:

    • 优点: 由于模型、视图和控制器的独立性,可以更容易地进行单元测试。开发者可以分别测试每个组件,确保各个部分的功能正常。
    • 应用场景: 对于追求高质量、可测试性的应用程序,MVC 提供了便利。
  3. 灵活性和可扩展性:

    • 优点: MVC 模型使应用程序的不同部分能够独立地进行修改和扩展,而不会影响其他部分。这提高了应用程序的灵活性和可扩展性。
    • 应用场景: 适用于需要频繁修改或扩展的应用程序。
  4. 更好的团队协作:

    • 优点: 因为 MVC 模型将应用程序划分为独立的组件,团队可以同时开发不同的组件而不会发生冲突。这促进了团队协作和并行开发。
    • 应用场景: 适用于大型项目,多个团队成员可以并行地工作在不同的组件上。

缺点:

  1. 复杂性增加:

    • 缺点: 在小型应用中,使用 MVC 模型可能会导致过度设计和不必要的复杂性。对于简单的应用程序,引入 MVC 可能会显得繁琐。
    • 应对策略: 对于小型应用,可以考虑使用更轻量级的框架或设计模式。
  2. 学习曲线:

    • 缺点: 对于初学者来说,理解和掌握 MVC 模型可能需要一定的学习曲线。这可能使得项目启动阶段的开发速度较慢。
    • 应对策略: 提供培训或使用更简单的设计模式可能有助于减缓学习曲线。
  3. 过度设计的风险:

    • 缺点: 在设计 MVC 应用程序时,存在过度设计的风险,即过度划分组件和关注点,导致不必要的复杂性。
    • 应对策略: 遵循适度设计的原则,根据实际需求调整设计,避免过度设计。

  总体而言,MVC 模型在大型、复杂的应用程序中表现出色,但在小型项目中可能显得过于繁琐。选择使用 MVC 还是其他设计模式应该根据项目的规模、需求和团队的经验来权衡。

三层架构

什么是三层架构?

  三层架构是将我们的项目分成了三个层面,分别是 表现层、业务逻辑层、数据访问层

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

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

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

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

更多框架:

三层框架和MVC的联系

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

  可以将 MVC 模式 理解成是一个大的概念,而 三层架构 是对 MVC 模式 实现架构的思想。 那么我们以后按照要求将不同层的代码写在不同的包下,每一层里功能职责做到单一,将来如果将表现层的技术换掉,而业务逻辑层和数据访问层的代码不需要发生变化