完成 P2 前架构整改
This commit is contained in:
@@ -2,15 +2,15 @@
|
||||
|
||||
## Bootstrap
|
||||
|
||||
Bootstrap 负责组合运行时依赖,而不是把业务流程写进场景脚本。推荐顺序是创建根 `Container`、注册 Config/Resource/Save/UI/Audio 等服务、注册首个 Feature 的工厂,最后调用 `GameFlow.StartupAsync<TInitialFeature>`。
|
||||
Bootstrap 负责组合运行时依赖,而不是把业务流程写进场景脚本。推荐顺序是创建根 `Container`、注册 Config/Resource/Save/UI/Audio 等服务、用 transient/scoped 生命周期注册首个 Feature,最后调用 `GameFlow.StartupAsync<TInitialFeature>`。
|
||||
|
||||
Bootstrap 必须持有生命周期 `CancellationToken`,退出时先保存必要状态,再调用 `GameFlow.ShutdownAsync`,最后释放预加载资源、音频句柄或其他根级缓存。
|
||||
Bootstrap 必须持有生命周期 `CancellationToken`,退出时先保存必要状态,再调用 `GameFlow.ShutdownAsync`,最后释放预加载资源、音频句柄或其他根级缓存。样例启动入口应暴露可观察的 `Task` 并统一记录异常,避免在 `Awake` / `OnApplicationQuit` 中直接使用 `async void`。
|
||||
|
||||
## Container 注册规则
|
||||
|
||||
容器注册应显式、可读、可追踪。稳定服务使用 `RegisterInstance`,带运行时参数或 Feature 私有依赖使用 `RegisterFactory`。不要依赖类型扫描或名称约定来猜测注册关系。
|
||||
容器注册应显式、可读、可追踪。稳定外部实例使用 `RegisterInstance`;根级懒加载单例使用 `RegisterSingletonFactory`;Feature、ViewModel、短生命周期服务使用 `RegisterTransient` 或 `RegisterScoped`。`RegisterFactory` 仅作为旧式 lazy singleton 兼容入口,不要用于 Feature 或临时业务对象。
|
||||
|
||||
Feature 只从自己的 scope 解析依赖。跨 Feature 的共享服务放在 root container,Feature 内部临时对象放在 Feature scope,并随 `FeatureContext` 一起释放。
|
||||
Feature 只从自己的 scope 解析依赖。跨 Feature 的共享服务放在 root container,Feature 内部临时对象放在 Feature scope,并随 `FeatureContext` 一起释放。父容器中的 transient/scoped 注册被子 scope 解析时,由请求的子 scope 持有和释放;singleton 仍由注册所在 scope 持有。
|
||||
|
||||
## Feature 生命周期
|
||||
|
||||
|
||||
Reference in New Issue
Block a user