一、层次式架构概述
核心概念
-
定义
- 层次式架构将系统划分为多层结构,每层为上层提供服务,并作为下层的客户端。
- 典型分层:表现层(UI) → 中间层(业务逻辑) → 数据访问层 → 数据层。
- 关键特性:层间通过接口通信,相邻层交互受限(如仅通过协议),支持模块化开发与复用。
-
优势与挑战
- 优势 :
- 关注分离:每层专注单一职责(如表现层处理交互,业务层处理逻辑)。
- 易维护性:修改一层不影响其他层(如更换数据库仅需改动数据访问层)。
- 复用性:业务逻辑层可被多种前端(Web/移动端)复用。
- 挑战 :
- 污水池反模式:请求流经多层但未处理业务逻辑(如业务层仅调用数据层接口),需控制此类请求比例(建议≤20%)。
- 系统臃肿:分层过多可能导致性能下降、部署复杂。
- 优势 :
典型考题
Q1 :分层架构中"污水池反模式"是什么?如何避免?
A1 :指请求穿透多层却未执行实际业务逻辑。可通过二八原则(控制穿透请求≤20%)或合并冗余层解决。
Q2 :为何分层架构适合传统IT系统?
A2:因其贴近企业组织结构(如前端/后端团队分离),且通过抽象层降低耦合度。
二、 表现层框架设计
1 表现层设计模式
| 模式 | 核心思想 | 组件交互 | 优点 | 适用场景 |
|---|---|---|---|---|
| MVC | 分离视图(View)、模型(Model)、控制器(Controller) | View接收输入→Controller调用Model→Model处理数据→Controller更新View | 支持多视图扩展;业务逻辑与UI解耦 | Java EE Web应用 |
| MVP | View与Model完全隔离,通过Presenter中介 | View将用户操作转发给Presenter→Presenter调用Model→结果通过接口返回View | 视图与模型彻底解耦;Presenter可复用;便于单元测试 | Android应用开发 |
| MVVM | View与Model双向绑定,ViewModel为桥梁 | View绑定ViewModel属性→数据变更自动同步视图;用户操作通过ViewModel更新Model | 减少模板代码;数据驱动视图更新;适合频繁数据操作场景 | 数据密集型应用(如Vue/React) |
关键区别:
- MVC:View可直接读取Model(如JSP直接调用JavaBean)。
- MVP/MVVM:View与Model严格隔离,通过中间层(Presenter/ViewModel)通信。
考题示例 :
Q :MVVM中ViewModel的作用是什么?
A:实现View与Model的双向绑定,处理数据状态转换与事件传递,解耦视图与业务逻辑。
2 表现层中UIP设计思想
UIP(用户界面流程框架) 是微软提出的分离UI逻辑与业务逻辑的解决方案:
- 分层结构 :
- UI组件:用户直接交互的界面(如窗体控件)。
- UIP组件:幕后协调工作流、导航、状态管理(如记录用户任务进度)。
- 核心功能 :
- 管理跨界面的信息流与事务状态。
- 将用户操作流程从具体设备/技术中抽象出来(如PC与移动端共享同一流程逻辑)。
- 价值 :
- 支持任务中断恢复(如保存草稿继续操作)。
- 提升UI代码复用性(业务逻辑不变时,可替换UI技术栈)。
考点 :UIP通过分离界面展示 与流程控制,解决传统UI代码与业务逻辑混杂的问题。
3 表现层动态生成设计思想
基于XML的界面管理技术实现动态UI生成:
- 三大模块 :
- 界面配置:静态定义初始界面(如控件位置、类型)。
- 界面定制:运行时动态修改界面属性(如调整工具栏图标)。
- 界面生成:解析XML配置 + 数据库数据 → 实时渲染界面。
- 技术实现 :
- 用XML描述控件树(如
<component type="button" constraint="17,22,78,20">)。 - 解析器根据平台转换XML(如Web生成HTML,桌面应用生成JFrame)。
- 用XML描述控件树(如
- 优势 :
- UI与业务逻辑分离:修改界面只需调整XML,无需改动代码。
- 多平台适配:同一份XML配置可生成不同技术栈的UI(如WebForm/WinForm)。
考题 :
Q :XML如何统一WebForm与WinForm的外观?
A:将GUI描述为XML数据,通过不同解析器转换为目标平台的UI组件(如HTML标签或桌面控件)。
本章重点考点总结
- 分层架构设计原则:关注分离、层间接口约束、避免污水池反模式。
- 表现层模式对比:MVC、MVP、MVVM的交互差异与适用场景。
- UIP核心价值:工作流与状态管理的抽象化。
- 动态UI生成:XML配置 + 解析器实现多平台适配。
典型综合题:
某系统需支持Web/桌面双端,且允许用户自定义界面。请设计表现层方案。
答:
- 采用MVVM模式:ViewModel统一业务逻辑,View按平台实现。
- XML界面管理:用XML定义控件布局,通过解析器生成Web/桌面UI。
- 集成UIP:管理用户操作流程,支持中断恢复。