UML——类图的三层架构思想

本文探讨了UML类图的设计与绘制方法,重点介绍了三层架构(表现层、业务逻辑层、数据访问层)的概念及其在类图中的应用,并通过生动的例子帮助理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        UML的学习看完视频就开始准备画图了,画图前去图书馆找了几本关于UML实战的书,在网上也找了一些关于UML画图的资料。本来看完视频后觉得画图还挺简单的,可是看完找的资料后就彻底懵了。其他的图还好,主要是关于类图,很多地方都说到三层架构的结构画类图。就找了一些关于三层架构的资料看,看完后类图就不知道该怎么画了,本以为类图画一张整体的类之间的关系就好了,但是又想用三层画一下,在实战中感觉自己快沦陷了,来这里整理一下。

        【知识点】

        在UML的静态机制中类图是一个重点,它不但是设计人员关心的核心,更是实现人员关注的核心,在九种图中占有很重要的地位,三层就是我们画好类图的关键思想。可以将类图很好的分层,有效地实现“高内聚,低耦合”的思想。虽然找了一些资料,但是理解的并不深刻,只是浅层次的了解了一下三层。

        简单的理解三层架构分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL),再加上实体层(Entity)。

         1、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得,这里我就先简单的理解为主要就是软件的窗体界面类。

         2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。B层是联系U层和D层的桥梁,进行他们之间的数据交互。

         3、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、查找等。接受B层的命令,对数据进行处理。

         4、实体层(Entity):贯穿于三层,连接三层。这里我就先简单的理解为实体层就是我们数据库中对应的表,当然它不只如此。

         看到一种比较形象的说法:实体层好比猪圈,所有的猪有序地按区域或编号,存放在不同的猪栏里(就像我们数据库中对应的一张张的表)。DAL好比是屠宰场,把猪从猪圈取出来进行(处理)屠杀,按要求取出相应的部位(字段),或者进行归类整理(统计),形成整箱的猪肉(数据集),传送给加工厂(BLL),加工处理后就可以卖到肉店(UI)。这样理解起来相对容易一些,还有很多不理解的地方,只能以后慢慢理解了。

         【小结】

         简单的理解三层画UML的类图,真的是有好多不是很懂得地方,越了解感觉不懂得越多,图就改来改去的画不好,确实挺头疼的,只能慢慢来了。不怕不知道,就怕不知道嘛!总会懂得,继续加油吧!

      附图一张(界面类图):


### 如何绘制三层架构UML 在软件开发中,三层架构通常由表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)组成。以下是关于如何使用 UML 来表示这种结构的方法以及推荐使用的工具。 #### 使用 UML 表示三层架构 1. **定义每一层的主要职责** - 表现层负责处理用户界面交互。 - 业务逻辑层封装核心功能逻辑。 - 数据访问层管理数据库操作或外部服务调用。 2. **创建具体的及其关系** 每一层可以包含多个具体,并通过不同的关系连接起来。例如: - 表现层可以通过依赖关系与业务逻辑层通信。 - 业务逻辑层可以通过关联或聚合关系与数据访问层协作[^2]。 3. **设计的具体形式** 根据引用内容可知,在 UML 中,可以用矩形框表示,分为三个部分:名、属性列表和方法列表[^4]。如果某个是抽象,则其名称应以斜体显示;对于接口,可以在顶部加上 `<interface>` 标记[^4]。 4. **展示层次间的关系** 层次间的常见关系包括但不限于以下几种: - **依赖关系**:当一个模块需要另一个模块的服务时建立此关系。它表现为一条带箭头的虚线指向被依赖方[^3]。 - **关联关系**:用于表达两个实体之间存在长期稳定联系的情况。一般画成带有方向性的直线[^2]。 - **泛化关系**:体现继承机制下的父子级联模式,即子扩展父的功能集。形上呈现为空心三角加实线链接至基节点[^4]。 5. **实例演示** 下面给出一段简单的伪代码用来模拟三层架构下各组件之间的相互作用: ```java // Presentation Layer (UI Controller) public class UIController { private BusinessService businessService; public void execute() { String result = businessService.performAction(); System.out.println(result); } } // Business Logic Layer (Core Service Implementation) abstract class BaseService {} class BusinessService extends BaseService { DataAccessLayer dataAccessLayer; @Override public String performAction() { return this.dataAccessLayer.fetchData(); // Delegating task to DAL. } } // Data Access Layer (Database Handler) interface IDataAccess {} class DataAccessLayer implements IDataAccess{ public String fetchData(){ return "Sample Data Retrieved"; } } ``` 以上片段展示了典型的分层设计方案——`UIController` 对 `BusinessService` 存在一个显式的依赖项,而后者又持有对 `DataAccessLayer` 的引用从而完成整个流程链路闭合[^3]。 #### 工具建议 为了更高效地构建此模型,可以选择一些专业的建模工具辅助工作流执行过程如下列举几个选项供参考考虑采用其中之一即可满足需求: - **StarUML**: 提供直观易懂的操作界面支持快速生成多种标准格式文档同时也允许导出源码框架便于后续迭代维护阶段继续沿用既定模板样式[^1]. - **Visual Paradigm**: 功能全面覆盖范围广除了基本绘外还具备版本控制集成能力适合团队合作场景应用场合广泛适应性强效果显著优于同产品平均水平之上. - **Enterprise Architect by Sparx Systems**: 高端解决方案适用于大型复杂系统的全生命周期管理不仅限于单纯的表制作还包括需求分析测试计划等多个维度全方位保障项目成功落地实施. ---
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值