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