提交代码

This commit is contained in:
yuding
2026-03-16 16:13:36 +08:00
parent 507112fcf9
commit dd4600bb5b
35 changed files with 31811 additions and 9696 deletions

View File

@@ -14,7 +14,7 @@
```
src/core/
├── event-emitter.ts # 事件发射器
├── manager-registry.ts # Manager 注册表(单例
├── manager-registry.ts # Manager 注册表(实例化
├── base-manager.ts # Manager 抽象基类
└── base-dialog-manager.ts # 对话框 Manager 基类
```
@@ -22,7 +22,7 @@ src/core/
| 文件 | 行数 | 职责 | 导出 |
|------|------|------|------|
| `event-emitter.ts` | 70 | 发布/订阅事件系统 | `EventEmitter` |
| `manager-registry.ts` | 127 | 全局单例注册表 | `ManagerRegistry` |
| `manager-registry.ts` | 127 | 实例级 Manager 注册表 | `ManagerRegistry` |
| `base-manager.ts` | 57 | Manager 基类 | `BaseManager` |
| `base-dialog-manager.ts` | 145 | 对话框 Manager 基类 | `BaseDialogManager` |
@@ -33,7 +33,7 @@ src/core/
```
EventEmitter
↑ (组合)
ManagerRegistry (例)
ManagerRegistry (例)
↑ (访问)
BaseManager (抽象类)
↑ (继承)
@@ -46,7 +46,7 @@ BaseDialogManager (抽象类)
| 模式 | 应用 | 说明 |
|------|------|------|
| 例模式 | ManagerRegistry | 全局唯一实例 |
| 例模式 | ManagerRegistry | 每个引擎实例独立注册表 |
| 发布/订阅 | EventEmitter | 解耦事件通信 |
| 模板方法 | BaseDialogManager | 定义对话框生命周期 |
@@ -99,17 +99,14 @@ unsubscribe();
### 概述
全局单例注册表,集中管理所有 Manager 实例,提供跨 Manager 通信
实例级注册表,集中管理单个引擎实例下的 Manager 与事件总线,支持多实例隔离
### API
```typescript
class ManagerRegistry {
// 获取单
static getInstance(): ManagerRegistry;
// 重置单例(用于测试)
static reset(): void;
// 创建实
constructor();
// 容器元素
container: HTMLElement | null;
@@ -125,25 +122,30 @@ class ManagerRegistry {
componentDetail: ComponentDetailManager | null;
measure: MeasureDialogManager | null;
walkControl: WalkControlManager | null;
map: MapDialogManager | null;
sectionPlane: SectionPlaneDialogManager | null;
sectionAxis: SectionAxisDialogManager | null;
sectionBox: SectionBoxDialogManager | null;
walkPath: WalkPathDialogManager | null;
walkPlanView: WalkPlanViewDialogManager | null;
engineInfo: EngineInfoDialogManager | null;
aiChat: AiChatManager | null;
setting: SettingDialogManager | null;
// 事件方法
emit<K extends keyof EngineEvents>(event: K, payload: EngineEvents[K]): void;
on<K extends keyof EngineEvents>(event: K, listener: (payload: EngineEvents[K]) => void): () => void;
off<K extends keyof EngineEvents>(event: K, listener: (payload: EngineEvents[K]) => void): void;
clearEvents(): void;
reset(): void;
}
```
### 使用示例
```typescript
const registry = ManagerRegistry.getInstance();
const registry = new ManagerRegistry();
// 访问 Manager
// 由引擎入口在初始化时写入各个 Manager 实例
registry.toolbar?.show();
registry.measure?.switchMode('distance');