vault backup: 2026-06-11 00:02:06
This commit is contained in:
162
各章笔记/第08章-包图.md
162
各章笔记/第08章-包图.md
@@ -48,6 +48,168 @@
|
||||
|
||||
> 子包继承父包中可见性为public和protected的元素。
|
||||
|
||||
### 📌 包图各元素的画法速查
|
||||
|
||||
> 这一节把包图里所有的画图元素(包本身、依赖、泛化)用字符画列出来。
|
||||
|
||||
#### ① 包的两种画法
|
||||
|
||||
**标准文件夹画法**(最常用):
|
||||
|
||||
```
|
||||
┌──────────────┐
|
||||
│ UI层 │ ← 上方有"小标签"(像文件夹的舌头)
|
||||
└──────────────┘
|
||||
```
|
||||
|
||||
字符画表示(小标签在左上角):
|
||||
|
||||
```
|
||||
┌────────────┐
|
||||
│┌─┐ │
|
||||
││ │ │
|
||||
│└─┘─────────┤
|
||||
│ UI层 │
|
||||
│ │
|
||||
│ ┌─────────┐ │
|
||||
│ │ 登录页 │ │ ← 包内可以嵌套子包或类
|
||||
│ └─────────┘ │
|
||||
└─────────────┘
|
||||
```
|
||||
|
||||
**简化画法**(只用矩形):
|
||||
|
||||
```
|
||||
┌──────────────┐
|
||||
│ UI层 │
|
||||
│ ┌────────┐ │
|
||||
│ │ 登录页 │ │
|
||||
│ └────────┘ │
|
||||
│ ┌────────┐ │
|
||||
│ │ 主页面 │ │
|
||||
│ └────────┘ │
|
||||
└──────────────┘
|
||||
```
|
||||
|
||||
#### ② 包的嵌套
|
||||
|
||||
```
|
||||
┌──────────────────────┐
|
||||
│ 电子商务系统 │
|
||||
│ ┌──────────┐ │
|
||||
│ │ 用户模块 │ │
|
||||
│ │ ┌──────┐ │ │
|
||||
│ │ │登录类│ │ │
|
||||
│ │ └──────┘ │ │
|
||||
│ │ ┌──────┐ │ │
|
||||
│ │ │注册类│ │ │
|
||||
│ │ └──────┘ │ │
|
||||
│ └──────────┘ │
|
||||
│ ┌──────────┐ │
|
||||
│ │ 订单模块 │ │
|
||||
│ └──────────┘ │
|
||||
└──────────────────────┘
|
||||
```
|
||||
|
||||
#### ③ 包的可见性符号
|
||||
|
||||
```
|
||||
┌────────────────┐
|
||||
│ ┌─┐ │
|
||||
│ │+│ 公开类 │ ← + 公有:任何外部包都可用
|
||||
│ └─┘───────────┤
|
||||
│ ┌─┐ │
|
||||
│ │#│ 受保护类 │ ← # 受保护:只有子包可用
|
||||
│ └─┘───────────┤
|
||||
│ ┌─┐ │
|
||||
│ │-│ 私有类 │ ← - 私有:只有包内部可用
|
||||
│ └─┘───────────┤
|
||||
│ │
|
||||
└────────────────┘
|
||||
```
|
||||
|
||||
#### ④ 包之间的依赖关系 —— 虚线 + 开放箭头
|
||||
|
||||
> 一个包中的类**引用**另一个包中的类 → 包之间形成依赖。
|
||||
|
||||
```
|
||||
┌──────────────┐ ┌──────────────┐
|
||||
│ UI层 │ │ 业务层 │
|
||||
│ │ │ │
|
||||
│ ┌────────┐ │ │ ┌────────┐ │
|
||||
│ │登录窗口 │ │ │ │登录服务 │ │
|
||||
│ └────────┘ │ │ └────────┘ │
|
||||
│ │ │ │
|
||||
└──────────────┘ └──────────────┘
|
||||
│ ▲
|
||||
└ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─┘
|
||||
虚线 + 开放箭头
|
||||
(依赖方向:UI层 依赖 业务层)
|
||||
```
|
||||
|
||||
⚠️ **依赖方向**:箭头从"使用者"指向"被使用者"(类似类图里的依赖)。
|
||||
|
||||
#### ⑤ 包之间的泛化关系 —— 实线 + 空心三角
|
||||
|
||||
> 子包继承父包的内容。子包继承父包中**public 和 protected** 的元素。
|
||||
|
||||
```
|
||||
┌──────────────┐ ┌──────────────┐
|
||||
│ 业务层 │ │ 通用层 │
|
||||
│ (子包) │ ─ ─ ─ ─ ─ ─ ─ ▷ │ (父包) │
|
||||
│ │ 空心三角 │ │
|
||||
│ ┌────────┐ │ │ ┌────────┐ │
|
||||
│ │订单处理 │ │ │ │日志工具 │ │
|
||||
│ └────────┘ │ │ └────────┘ │
|
||||
│ ┌────────┐ │ │ ┌────────┐ │
|
||||
│ │支付处理 │ │ │ │通用工具 │ │
|
||||
│ └────────┘ │ │ └────────┘ │
|
||||
└──────────────┘ └──────────────┘
|
||||
```
|
||||
|
||||
⚠️ **泛化方向**:空心三角**指向父包**(与类图泛化一致)。
|
||||
|
||||
#### ⑥ 完整包图示例
|
||||
|
||||
```
|
||||
┌────────────────┐
|
||||
│ 表现层 │
|
||||
│ ┌────────┐ │
|
||||
│ │登录页 │ │
|
||||
│ └────────┘ │
|
||||
│ ┌────────┐ │
|
||||
│ │主窗体 │ │
|
||||
│ └────────┘ │
|
||||
└───────┬────────┘
|
||||
│ 依赖
|
||||
╌ ╌ ╌ ╌ ╌ ╌ ╌
|
||||
▼
|
||||
┌────────────────┐ ▷ ┌────────────────┐
|
||||
│ 业务层 │ ─ ─ ─ ─ ─ ─ ─ ─ ─│ 通用层 │
|
||||
│ │ 泛化 │ │
|
||||
│ ┌────────┐ │ │ ┌────────┐ │
|
||||
│ │登录管理 │ │ │ │日志工具 │ │
|
||||
│ └────────┘ │ │ └────────┘ │
|
||||
│ ┌────────┐ │ │ ┌────────┐ │
|
||||
│ │订单管理 │ │ │ │数据校验 │ │
|
||||
│ └────────┘ │ │ └────────┘ │
|
||||
└───────┬────────┘ └────────────────┘
|
||||
│ 依赖
|
||||
╌ ╌ ╌ ╌ ╌ ╌ ╌
|
||||
▼
|
||||
┌────────────────┐
|
||||
│ 数据层 │
|
||||
│ ┌────────┐ │
|
||||
│ │用户DAO │ │
|
||||
│ └────────┘ │
|
||||
│ ┌────────┐ │
|
||||
│ │订单DAO │ │
|
||||
│ └────────┘ │
|
||||
└────────────────┘
|
||||
```
|
||||
|
||||
🔑 **一句话记忆口诀**:包用文件夹画,标签是包名;包间依赖是虚线开放箭头(指向被依赖),包间泛化是实线空心三角(指向父包);包可以嵌套,元素分+/-可见性。
|
||||
|
||||
---
|
||||
|
||||
## 💡 三、包的四大设计原则
|
||||
|
||||
Reference in New Issue
Block a user