using GFramework.Core.Abstractions.model; using GFramework.Core.Abstractions.system; using GFramework.Core.Abstractions.utility; namespace GFramework.Core.Abstractions.architecture; /// /// 架构接口,专注于生命周期管理,包括系统、模型、工具的注册和获取 /// 业务操作通过 ArchitectureRuntime 提供 /// public interface IArchitecture : IAsyncInitializable { /// /// 获取架构上下文 /// IArchitectureContext Context { get; } /// /// 初始化方法,用于执行对象的初始化操作 /// /// /// 该方法通常用于设置初始状态、初始化成员变量或执行必要的预处理操作 /// void Initialize(); /// /// 销毁方法,用于执行对象的清理和销毁操作 /// /// /// 该方法通常用于释放资源、清理内存或执行必要的清理操作 /// void Destroy(); /// /// 注册系统实例到架构中 /// /// 系统类型,必须实现ISystem接口 /// 要注册的系统实例 /// 注册的系统实例 T RegisterSystem(T system) where T : ISystem; /// /// 注册模型实例到架构中 /// /// 模型类型,必须实现IModel接口 /// 要注册的模型实例 /// 注册的模型实例 T RegisterModel(T model) where T : IModel; /// /// 注册工具实例到架构中 /// /// 工具类型,必须实现IUtility接口 /// 要注册的工具实例 /// 注册的工具实例 T RegisterUtility(T utility) where T : IUtility; /// /// 安装架构模块 /// /// 要安装的模块 /// 安装的模块实例 IArchitectureModule InstallModule(IArchitectureModule module); /// /// 注册生命周期钩子 /// /// 生命周期钩子实例 /// 注册的钩子实例 IArchitectureLifecycle RegisterLifecycleHook(IArchitectureLifecycle hook); /// /// 等待直到架构准备就绪的异步操作 /// /// 表示异步等待操作的任务 Task WaitUntilReadyAsync(); }