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()
{
var name = GetType().Name;
_logger = LoggerFactoryResolver.Provider.CreateLogger(name);
_logger.Debug($"Initializing system: {name}");
OnInit();
_logger.Info($"System initialized: {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()
{
}
}