76 lines
2.2 KiB
Markdown
76 lines
2.2 KiB
Markdown
# 查重逻辑划分
|
||
|
||
### **1. 核心模块划分**
|
||
| 模块名 | 职责 | 包含内容 |
|
||
|--------|------|----------|
|
||
| **`core`** (核心逻辑) | 处理核心查重算法 | 文件遍历、哈希计算、查重逻辑 |
|
||
| **`io`** (I/O处理) | 文件系统交互 | 文件读取、内存映射、并行I/O优化 |
|
||
| **`model`** (数据模型) | 定义数据结构 | 文件元数据、哈希结果、查重报告 |
|
||
| **`ui`** (用户界面) | GUI展示 | JavaFX面板、控制器、事件处理 |
|
||
| **`util`** (工具类) | 公用功能 | 哈希工具、进度计算、日志记录 |
|
||
|
||
---
|
||
|
||
### **2. 模块依赖关系**
|
||
```mermaid
|
||
graph TD
|
||
ui --> core
|
||
ui --> model
|
||
core --> io
|
||
core --> model
|
||
core --> util
|
||
io --> util
|
||
```
|
||
|
||
---
|
||
|
||
### **3. 进阶模块(可选扩展)**
|
||
| 模块名 | 用途 |
|
||
|--------|------|
|
||
| **`api`** | 提供REST接口供其他系统调用 |
|
||
| **`cli`** | 命令行界面(脱离JavaFX使用) |
|
||
| **`plugin`** | 支持扩展哈希算法或存储后端 |
|
||
|
||
---
|
||
|
||
### **4. 目录结构示例**
|
||
```
|
||
src/
|
||
├── main/
|
||
│ ├── java/
|
||
│ │ ├── top.r3.doc/
|
||
│ │ │ ├── core/
|
||
│ │ │ ├── io/
|
||
│ │ │ ├── model/
|
||
│ │ │ ├── ui/
|
||
│ │ │ ├── util/
|
||
│ │ │ └── Main.java (主入口)
|
||
│ └── resources/ (FXML/CSS)
|
||
└── test/ (对应模块的单元测试)
|
||
```
|
||
|
||
---
|
||
|
||
### **5. 关键设计原则**
|
||
1. **单一职责**:每个模块只做一件事(如`io`模块只处理I/O)
|
||
2. **依赖倒置**:高层模块(如`ui`)依赖抽象(接口),不依赖具体实现
|
||
3. **可测试性**:核心逻辑与UI分离,便于单元测试
|
||
4. **扩展性**:通过策略模式(如`FileHashStrategy`)支持新哈希算法
|
||
|
||
---
|
||
|
||
### **6. 优化后的查重流程**
|
||
```mermaid
|
||
sequenceDiagram
|
||
UI->>+Core: 启动查重(rootPath)
|
||
Core->>+IO: 遍历文件(rootPath)
|
||
IO-->>-Core: 返回文件列表
|
||
loop 每个文件
|
||
Core->>+IO: 读取文件内容
|
||
IO-->>-Core: 返回字节数据
|
||
Core->>+Util: 计算哈希
|
||
Util-->>-Core: 返回哈希值
|
||
end
|
||
Core->>+Model: 生成查重报告
|
||
Model-->>-UI: 显示结果
|
||
``` |