# 查重逻辑划分 ### **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: 显示结果 ```