MVC、MVP、MVVM、MVVM-C和VIPER架构模式是用于构建应用程序的几种流行设计模式。

  • MVC (Model-View-Controller): 这是最古老的模式,大约有50年的历史。它将应用程序分为三个主要部分:模型(数据)、视图(用户界面)和控制器(业务逻辑)。
  • MVP (Model-View-Presenter): 与MVC类似,但将控制器替换为呈现器,以进一步分离视图和业务逻辑。
  • MVVM (Model-View-ViewModel): 特别适用于数据绑定,将视图和模型之间的逻辑封装在视图模型中,有助于提高测试性和可维护性。
  • MVVM-C (Model-View-ViewModel-Coordinator): 在MVVM的基础上增加了协调器,用于处理视图之间的导航和通信。
  • VIPER (View-Interactor-Presenter-Entity-Router): 这是一种更为复杂的模式,它将应用程序分解为五个部分,每个部分都有明确的职责,以提高模块化和可测试性。
    alt text

MVC控制器

MVC控制器的概念,我们项目中常见的就是MVC控制器,MVC 是一种软件架构模式,它将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller)。这种分离有助于管理复杂的应用程序,并提高代码的可维护性和重用性。

  • 模型(Model):负责处理应用程序的数据逻辑。通常包含业务逻辑、数据访问层等。
  • 视图(View):负责显示用户界面。它是模型的可视化表示,可以是一个网页或其他形式的UI。
  • 控制器(Controller):作为模型与视图之间的中介,处理用户的输入,执行相应的业务逻辑,并更新模型或视图。
    alt text

@Controller和@restController的区别

  • 在Spring MVC框架中,控制器:
    @Controller 注解用来标记一个类为控制器,它可以处理HTTP请求并返回响应。这些控制器通常用于生成HTML页面,适合于传统的Web应用,在现在的前后端分离项目中已经不太适用。

    @controller
    传统的SpringMVC框架所带的注解,通过这个注解表明这个java类是一个控制器,可以对视图和数据进行操控,作为一个中间人才处理和展示数据,在现在的项目中已经不再适用,可以不用过于关注

  • 在Spring框架中,REST控制器:
    REST 是一种设计风格,而不是具体的实现。RESTful Web服务使用标准的HTTP方法(GET, POST, PUT, DELETE等)来操作资源。每个资源通过唯一的URL标识,客户端可以通过这个URL对资源进行创建、读取、更新和删除(CRUD)操作。

    • 资源(Resource):在REST中,任何可以被命名的信息都可以看作是一个资源,如用户、订单、评论等。
    • 表现层(Representation):资源的表现形式,比如JSON、XML等格式。
    • 状态转移(State Transfer):客户端和服务器之间通过交换资源的状态信息来进行交互。
      @RestController 注解是用来标记一个类为RESTful风格的控制器。与 @Controller 不同的是,@RestController 自动添加了 @ResponseBody 注解,这意味着所有方法都将直接写入HTTP响应体中,而不需要经过视图解析器处理。因此,@RestController 通常用于构建API接口,返回的数据通常是JSON或XML格式,适合作为前后端分离架构中的后端服务。
      @RestController 在上面的描述中已经知道了@RestController 自动添加了 @ResponseBody 注解,而这里的@ResponseBody即将所有的返回值自动装在了一个对象中,这些对象会被自动转换成JSON格式并写入到HTTP响应体中,所以通过@RestController控制器就只会返回对应的JSON数据,而不是像@controller一样需要同时返回数据和视图(也是是前端的代码);

控制器总结

  • MVC控制器 主要用于传统的Web应用开发,其中涉及到视图渲染,最终目的是生成HTML页面供浏览器显示。
  • REST控制器 则主要用于提供API接口,支持前后端分离的架构,返回的数据通常是结构化的,如JSON或XML,由前端JavaScript框架或其他客户端消费。

参考文献或转载相关:

原文链接:https://blog.csdn.net/qq_45705626/article/details/142866265