表现层

表现层(Presentation Layer)是软件架构中最上层的部分,主要负责处理用户界面和用户交互。它也被称为展现层或UI层,是用户与系统交互的接口。

定义与职责

表现层的主要职责包括:

在分层架构中,表现层通常依赖于业务逻辑层(或应用层)来获取数据和执行业务操作,对用户隐藏了系统内部的复杂性。

主要模式

MVC(Model-View-Controller)

随着前后端分离以及后端微服务化的不断发展,传统的MVC已不适合现在的纯后端系统,Controller其实也是API,它代表了服务对外提供的接口,是一种合约

MVC模型演变

Model1模型

---
title: Model1模型
---
sequenceDiagram
  客户端 ->> JSP: 请求
  JSP ->> JavaBean: 请求
  JavaBean ->> DAO: 数据库操作
  DAO ->> JavaBean: 数据库操作
  JavaBean ->> JSP: 返回
  JSP ->> 客户端 : 返回

Model2模型

---
title: Model2模型
---
sequenceDiagram
  participant 客户端
  participant 控制器 as Controller(Filter/Servlet)
  participant 模型 as Model(JavaBean)
  participant 视图 as View(JSP)

  客户端 ->> 控制器: 请求
  控制器 ->> 模型: 请求
  控制器 ->> 视图: 请求
  视图 ->> 模型: 请求
  模型 ->> 数据库: 请求

MVC的优势与弊端

优势

弊端

控制器类型

  1. 页面控制器: 为特定页面或动作处理请求的对象。控制器通过绑定请求来实现与用户的交互。其从请求中提取参数,对输入进行处理,执行业务逻辑,选择适当的视图以呈现结果。

  2. 前端控制器: 处理所有请求的控制器,执行一些通用的行为,如身份验证和日志记录,并且这些行为可以在运行时动态修改

  3. 应用控制器: 一个处理程序流的集中控制点,负责协调页面控制器与前端控制器之间的交互,确保请求在应用中的流转符合预期

Model(业务数据模型)

业务数据模型,Model层是高层策略,是技术无关逻辑的封装

View(视图)

当有用户的行为触发操作时,由控制器更新模型,并通知视图进行更新

Controller(控制器)

主要是接收用户请求,并负责协调Model与View

MVP(Model-View-Presenter)

stateDiagram-v2
  View --> Presenter: User events
  Presenter --> Model: Model update
  Model --> Presenter: State changes
  Presenter --> View: View update

MVVM(Model-View-ViewModel)

MVVM是MVC模式的进一步演变,特别适用于现代前端开发,如Vue.js等框架。

BFF(Backend for Frontend)

graph TB
    subgraph "Applications"
        WebApp[Web APP]
        MobileApp[Mobile APP]
        DesktopApp[Desktop APP]
    end

    subgraph "Gateways"
        WebGateway[Web APP Gateway]
        MobileGateway[Mobile APP Gateway]
        DesktopGateway[Desktop APP Gateway]
    end

    subgraph "Services"
        AccountService[Account Service]
        PaymentService[Payment Service]
        SecurityService[Security Service]
        WarehouseService[Warehouse Service]
    end

    WebApp -- REST --> WebGateway
    MobileApp -- RMI --> MobileGateway
    DesktopApp -- gRPC --> DesktopGateway

    WebGateway --> AccountService
    WebGateway --> PaymentService
    MobileGateway --> PaymentService
    MobileGateway --> SecurityService
    DesktopGateway --> SecurityService
    DesktopGateway --> WarehouseService

与分层架构的关系

在传统的分层架构中,表现层是系统架构的最上层,通常与业务逻辑层、数据访问层和数据库层形成依赖关系:

graph TD
    展现层[展现层]
    业务逻辑层[业务逻辑层]
    数据访问层[数据访问层]
    数据库[(数据库)]

    展现层 --> 业务逻辑层 --> 数据访问层 --> 数据库

在现代架构中,表现层与应用层、领域层和基础设施层形成更复杂的交互关系:

graph TD
    展现层[展现层]
    应用层[应用层]
    领域层[领域层]
    基础设施层[基础设施层]

    展现层 --> 应用层 --> 领域层
    领域层 --> 基础设施层

视图与模型关系

当系统有了一些不可见的逻辑时,就需要注意模型与视图分离。

关联内容(自动生成)