using GFramework.Core.Abstractions.enums; using GFramework.Core.Abstractions.logging; using GFramework.Core.Abstractions.system; using GFramework.Core.logging; using GFramework.Core.rule; namespace GFramework.Core.system; /// /// 抽象系统基类,实现系统接口的基本功能 /// 提供架构关联、初始化和销毁机制 /// public abstract class AbstractSystem : ContextAwareBase, ISystem { private ILogger _logger = null!; /// /// 系统初始化方法,调用抽象初始化方法 /// void ISystem.Init() { _logger = LoggerFactoryResolver.Provider.CreateLogger(nameof(GetType)); _logger.Debug($"Initializing system: {GetType().Name}"); OnInit(); _logger.Info($"System initialized: {GetType().Name}"); } /// /// 系统销毁方法,调用抽象销毁方法 /// void ISystem.Destroy() { _logger.Debug($"Destroying system: {GetType().Name}"); OnDestroy(); _logger.Info($"System destroyed: {GetType().Name}"); } /// /// 处理架构阶段事件的虚拟方法 /// /// 当前的架构阶段 public virtual void OnArchitecturePhase(ArchitecturePhase phase) { } /// /// 抽象初始化方法,由子类实现具体的初始化逻辑 /// protected abstract void OnInit(); /// /// 抽象销毁方法,由子类实现具体的资源清理逻辑 /// protected virtual void OnDestroy() { } }