# 设计原则与术语速查

> **用途**：考前快速回顾关键设计原则和术语

---

## 🔷 SOLID五大原则

| 原则 | 全称 | 含义 |
|------|------|------|
| **S** | 单一职责原则 | 一个类只负责一件事 |
| **O** | 开闭原则 | 对扩展开放，对修改关闭 |
| **L** | 里氏替换原则 | 子类可以替换父类而不出问题 |
| **I** | 接口隔离原则 | 接口要小而精，不要大而全 |
| **D** | 依赖倒置原则 | 依赖抽象（接口），不依赖具体实现 |

---

## 🔷 包设计四大原则

| 缩写 | 原则 | 含义 |
|------|------|------|
| **REP** | 重用等价原则 | 可一起复用的类放一个包 |
| **CCP** | 共同闭包原则 | 需要同时修改的类放一个包 |
| **CRP** | 共同重用原则 | 不会一起用的类分开放 |
| **ADP** | 非循环依赖原则 | 包之间的依赖不能形成环 |

---

## 🔷 其他重要原则

| 原则 | 含义 |
|------|------|
| **高内聚低耦合** | 包内关系紧密（内聚），包间关系稀疏（耦合） |
| **迪米特法则** | 最少知识原则——只跟"朋友"说话 |
| **组合优于继承** | 能用组合实现的效果，别用继承（更灵活） |

---

## 🔷 数据库三大范式

| 范式 | 要求 |
|------|------|
| **1NF** | 字段值不可再分（原子性） |
| **2NF** | 非主键字段完全依赖主键（消除部分依赖） |
| **3NF** | 非主键字段不传递依赖主键（消除传递依赖） |

---

## 🔷 对象模型→数据模型映射速查

| 对象模型 | 数据模型 |
|----------|----------|
| 类 | 表 |
| 属性 | 字段（列） |
| 操作 | 触发器 + 存储过程 |
| 1对0..*关联 | 多的一端加外键 |
| *对*关联 | 新建关联表 |
| 泛化关系 | 三种方案（父子各建表/只建子表/只建父表） |

---

## 🔷 需求工程术语速查

| 术语 | 定义 |
|------|------|
| **软件需求** | 用户对系统在功能、行为、性能、约束方面的期望 |
| **业务需求** | 组织的高层次目标 |
| **用户需求** | 用户使用系统完成的任务 |
| **功能需求** | 系统必须实现的功能 |
| **非功能需求** | 系统的质量属性和约束 |
| **SRS** | 软件需求规格说明书 |
| **需求基线** | 评审通过、双方承诺的需求版本 |
| **需求跟踪矩阵(RTM)** | 记录需求与设计、代码、测试对应关系的表 |
| **需求变更控制** | 变更申请→审批→修改→重新确认的流程 |

---

## 🔷 面向对象核心概念

| 概念 | 含义 |
|------|------|
| **封装** | 隐藏内部实现，只暴露接口 |
| **继承** | 子类自动拥有父类的属性和方法 |
| **多态** | 同一操作在不同对象上有不同行为 |
| **抽象** | 提取共性，忽略细节 |

---

## 🔷 关联关系多重性速记

| 符号 | 含义 |
|------|------|
| `1` | 恰好1个 |
| `0..1` | 0个或1个 |
| `*` 或 `0..*` | 0个或多个 |
| `1..*` | 至少1个 |
| `n` | 恰好n个 |

---

## 🔷 常见设计模式速查

| 模式 | 类型 | 解决什么问题 |
|------|------|-------------|
| **策略模式** | 行为型 | 同一功能有多种算法实现，可动态切换 |
| **工厂方法** | 创建型 | 创建对象时不指定具体类 |
| **组合模式** | 结构型 | 统一处理整体和部分（如文件系统目录和文件） |
| **DAO模式** | 数据访问 | 分离数据访问逻辑和业务逻辑 |
| **MVC模式** | 架构型 | 分离界面(View)、逻辑(Controller)、数据(Model) |
