# 架构与项目结构指南

本文档详细介绍IT资产模型管理库的架构设计和项目结构，帮助开发者理解系统的组织方式和核心设计理念。

## 项目结构

项目采用清晰的分层架构，严格遵循关注点分离原则，实现了存储层与业务逻辑的完全解耦。核心代码位于`src/`目录，按功能模块组织如下：

```
├── src/            # 源代码目录
│   ├── adapters/        # 适配器层 - 负责存储访问抽象
│   │   ├── storage/       # 具体存储适配器实现
│   │   │   ├── FileSystemStorageAdapter.ts
│   │   │   └── MemoryStorageAdapter.ts
│   │   ├── AdapterFactory.ts       # 适配器工厂
│   │   ├── BaseStorageAdapter.ts   # 存储适配器基类
│   │   ├── StorageFactory.ts       # 存储适配器工厂
│   │   ├── StorageRegistry.ts      # 存储适配器注册表
│   │   └── DatabaseAdapterBridge.ts # 数据库适配器兼容桥
│   ├── dao/             # 数据访问层 - 封装数据操作
│   │   ├── DomainDAOImpl.ts         # 域名数据访问实现
│   │   └── DomainManagerImpl.ts     # 域名管理器实现
│   ├── exceptions/      # 异常定义 - 统一错误处理
│   │   ├── DatabaseError.ts         # 数据库相关异常
│   │   └── DomainModelError.ts      # 域名模型相关异常
│   ├── interfaces/      # 接口定义 - 核心抽象层
│   │   ├── StorageAdapter.ts        # 存储适配器接口
│   │   ├── DomainManager.ts         # 域名管理器接口
│   │   └── StoragePlugin.ts         # 存储插件接口
│   ├── models/          # 数据模型 - 定义数据结构
│   │   └── Domain.ts                # 域名数据模型
│   ├── plugins/         # 插件系统 - 扩展机制
│   │   └── builtins/      # 内置插件
│   └── index.ts         # 主入口文件 - 统一导出
├── docs/           # 项目文档 - 详细设计说明
├── tests/          # 测试代码 - 确保质量
├── config/         # 配置文件 - 应用配置
└── examples/       # 示例代码 - 使用示例
```

## 目录结构说明

- **adapters/**: 适配器层，提供存储访问的抽象和实现
  - **storage/**: 具体存储适配器实现（文件系统、内存等）
  - **Factory类**: 创建和管理各类适配器实例
  - **Registry类**: 注册和管理存储插件

- **dao/**: 数据访问层，封装域名相关的业务逻辑和数据操作
  - **DomainManagerImpl.ts**: 实现了域名的CRUD和状态管理
  - **DomainDAOImpl.ts**: 提供底层数据访问操作

- **exceptions/**: 统一的异常处理，定义了各类错误情况
  - **分级异常体系**: 从基础异常到具体业务异常的层次结构

- **interfaces/**: 核心抽象层，定义所有公共接口
  - **StorageAdapter**: 统一存储接口，是整个持久化层的基础
  - **DomainManager**: 域名管理核心接口，面向业务逻辑

- **models/**: 数据模型定义，使用TypeScript接口明确定义数据结构

- **plugins/**: 插件系统，支持动态扩展存储能力

## 架构设计

项目采用严格的分层架构设计，通过接口抽象实现了存储层与业务逻辑的完全解耦，支持灵活的扩展和适配：

```
┌──────────────────────────────────────┐
│          应用服务层/业务层            │
│     (集成此库的上层应用系统)         │
├──────────────────────────────────────┤
│          DomainManager接口           │
│    (域名管理核心业务抽象)            │
├──────────────────────────────────────┤
│             存储抽象层               │
│  ┌─────────────┐   ┌──────────────┐  │
│  │ 存储注册表   │   │ 存储工厂类    │  │
│  └─────────────┘   └──────────────┘  │
├──────────────────────────────────────┤
│            StorageAdapter            │
│    (统一存储访问接口抽象)            │
├──────────────────────────────────────┤
│         具体存储适配器实现            │
│  ┌─────────────┐   ┌──────────────┐  │
│  │ 文件系统适配器 │   │ 内存存储适配器  │  │
│  └─────────────┘   └──────────────┘  │
│  ┌─────────────┐   ┌──────────────┐  │
│  │ 数据库适配器  │   │  自定义适配器   │  │
│  └─────────────┘   └──────────────┘  │
├──────────────────────────────────────┤
│            实际存储介质               │
└──────────────────────────────────────┘
```

### 核心架构特点

1. **接口驱动设计**：通过定义清晰的接口抽象，实现各层的松耦合
2. **依赖倒置原则**：高层模块依赖于抽象，而不依赖于具体实现
3. **插件化架构**：通过StorageRegistry和StoragePlugin接口支持动态扩展
4. **统一错误处理**：标准化的异常类层次，简化错误处理逻辑
5. **向后兼容性**：通过适配器桥接模式支持现有系统集成

---

## 相关文档

- [安装与构建指南](./installation-guide.md) - 详细的安装和构建步骤
- [使用教程](./usage-guide.md) - 全面的使用示例和代码片段
- [API参考](./api-reference.md) - 完整的API接口文档和数据模型说明
- [扩展指南](./extension-guide.md) - 开发自定义存储适配器和扩展功能
- [模型层接口规范](./模型层接口规范.md) - 详细描述所有接口参数和返回值规范