分层 Layered System
概述:下层构件向上层构件提供服务,上层构件被看作下层的客户
分层原则
- 分离关注,减少重叠
- 抽象,删枝节留主干
- 隐藏,只暴露需要访问的接口
构件、连接件
-
构件:各个层次内部包含的构件
-
连接件:层间的交互协议
-
拓扑结构:分层结构;
-
拓扑约束:对相邻层之间的交互要进行约束:
- 集中式部署
- 分布式部署
分层模式
某一层的构件只能跟同级别的对等实体或者较低级别的构件交互。注意:下层也可以与上层进行交互,但是需要特殊的方法
- 严格模式 Strict System Layering
- 松散分层 Loosely System Layering
- 横切关注 Cross-Cutting Concerns
例子:三层C/S结构
客户端、数据库服务器中间加设一个中间层,可能是事务处理监控服务器、消息服务器、应用服务器等;它负责消息排队、业务逻辑执行等等
- 表示层:
- 用户接口部分,通常使用GUI;
- 功能包括:检查用户输入、显示应用输出,不包含或包含一部分业务逻辑
- 功能层:
- 主体,大部分的逻辑;
- 从表示层获得输入并处理,向数据层获得数据或向其更新数据;
- 处理结果返回给表示层
- 数据层:
- DBMS,接受功能层的数据查询、执行请求等;
- 执行结果返回给功能层
表示层 ↔️ 功能层 ↔️ 数据层
浏览器/服务器
是三层C/S风格的一种实现方式
表示层:浏览器
逻辑层:Web服务器、应用服务器
数据层:数据库服务器
优点:
- 维护成本低:客户端无任何业务逻辑
- 安全性:客户端不访问任何数据
- 瘦客户端
- 容错能力
- 负载平衡能力
缺点:
- 以同步的请求/响应
- 受HTTP协议的文本的数据交换
- 页面为单位,动态交互性不强
- 难以复杂GUI
MVC 风格
Model-View-Controller,关注点分离,实现model和view的解耦
构件、连接件
构件:MVC
连接件:显式调用、隐式调用
Model 模型
负责数据存取、负责业务逻辑实现、可能负责数据验证
View 视图
- 获取用户输入
- 向controller发送处理请求、接收来自controller的反馈,并将model的处理结果显示给用户
- 一个model可能有多个view——同一批数据,使用不同的方式来呈现
Controller 控制器
- 接收来自客户的请求
- 调用model执行业务逻辑
- 调用View显示执行结果
应该可以理解成:controller管理view和model,这两个可以作为controller的一个私有属性
原则、优缺点
原则:
- 展示与模型分离
- 控制器与视图分离
优点:
- 易于开发维护
- 同一信息显示方式可以多样
- 业务逻辑更易测试
可用的框架
- J2EE
- Struts MVC
- Spring MVC
- PHP
- CakePHP
- Struts4php
- ...
评论区