Files
Convention-Template/Convention/[Runtime]/Architecture.md

105 lines
2.6 KiB
Markdown
Raw Normal View History

2025-06-29 17:42:49 +08:00
[返回](./Runtime-README.md)
# /Convention/Runtime/Architecture
---
核心架构模块,提供依赖注入、事件系统和时间线管理功能
## 接口定义
系统定义了以下核心接口来规范架构设计:
### ISignal
信号接口,用于事件系统的消息传递
### IModel
2025-09-27 21:51:48 +08:00
模型类接口, 仅作为接口倒置
2025-06-29 17:42:49 +08:00
### IConvertable<T>
转换接口,提供类型转换能力:
2025-09-27 21:51:48 +08:00
- `T ConvertTo()` 转换为目标类型
2025-06-29 17:42:49 +08:00
### IConvertModel<T>
组合接口,同时继承 `IModel``IConvertable<T>`
## 核心类型
### SingletonModel<T>
泛型单例模型,提供类型安全的单例管理:
- 支持依赖注入和实例替换
- 提供隐式转换操作符
- 集成模型序列化功能
### DependenceModel
依赖模型,管理多个条件的组合验证:
- 支持多个 `IConvertModel<bool>` 的依赖关系
- 提供枚举接口遍历所有依赖
- 所有依赖条件均满足时返回true
## 注册系统
2025-09-27 21:51:48 +08:00
### 对象注册相关
2025-06-29 17:42:49 +08:00
2025-09-27 21:51:48 +08:00
向slot槽注册实例target, 并设置依赖dependences, 当槽的所有依赖的槽都注册完成后触发completer
- `void Register(Type slot, object target, Action completer, Type[] dependences) throw(InvalidOperation)`
解除slot槽中的注册
- `bool Unregister(Type slot) noexcpect`
2025-06-29 17:42:49 +08:00
### 注册查询
2025-09-27 21:51:48 +08:00
- `bool Contains(Type slot)`
- `bool Get(Type slot)`
2025-06-29 17:42:49 +08:00
## 事件系统
### 消息监听
2025-09-27 21:51:48 +08:00
Listening类, 拥有停止监听的函数`StopListening()`
- `class Listening`
向指定的槽slot中添加监听信号Signal的监听器listener
- `Listening AddListener<Signal>(Type slot, Action<Signal> listener) where Signal : ISignal`
向指定的槽slot发送信号signal
- `void SendMessage(Type slot, ISignal signal)`
向所有槽广播信号signal
- `void SendMessage<Signal>(Signal signal)`
2025-06-29 17:42:49 +08:00
## 时间线系统
### 时间线管理
- `CreateTimeline()` 创建新的时间线
- `AddStep(int timelineId, Func<bool> predicate, params Action[] actions)` 添加步骤
- `UpdateTimeline()` 更新所有时间线
- `ResetTimelineContext(int timelineId)` 重置时间线上下文
提供基于条件的任务调度:
- 支持多条时间线并行执行
- 基于谓词的条件触发
- 支持动态添加执行步骤
## 类型格式化
### 类型序列化
- `FormatType(Type type)` 格式化类型为字符串
- `LoadFromFormat(string data)` 从字符串加载类型
- `LoadFromFormat(string data, out Exception exception)` 安全加载类型
使用格式:`Assembly::FullTypeName`
## 内部管理
### 系统重置
- `InternalReset()` 重置所有内部状态
清理以下组件:
- 注册历史
- 未完成的目标
- 完成器回调
- 依赖关系
- 子对象容器
- 事件监听器
- 时间线队列