refactor(core): 重构核心框架生命周期管理

- 引入标准化的生命周期接口体系 (IInitializable, IDisposable, ILifecycle)
- 将上下文工具类的初始化方法改为公共访问权限
- 为上下文工具类添加销毁功能和相关回调方法
- 更新模型和系统接口以使用新的生命周期接口
- 移除原有的独立初始化和销毁方法声明
- 统一框架组件的生命周期管理机制
This commit is contained in:
GeWuYou 2026-01-17 08:52:51 +08:00
parent b6554c5820
commit efa069d2f5
9 changed files with 60 additions and 33 deletions

View File

@ -0,0 +1,12 @@
namespace GFramework.Core.Abstractions.lifecycle;
/// <summary>
/// 可销毁接口,为需要资源清理的组件提供标准销毁能力
/// </summary>
public interface IDisposable
{
/// <summary>
/// 销毁组件并释放资源
/// </summary>
void Destroy();
}

View File

@ -0,0 +1,12 @@
namespace GFramework.Core.Abstractions.lifecycle;
/// <summary>
/// 可初始化接口,为需要初始化的组件提供标准初始化能力
/// </summary>
public interface IInitializable
{
/// <summary>
/// 初始化组件
/// </summary>
void Init();
}

View File

@ -0,0 +1,6 @@
namespace GFramework.Core.Abstractions.lifecycle;
/// <summary>
/// 完整生命周期接口,组合了初始化和销毁能力
/// </summary>
public interface ILifecycle : IInitializable, IDisposable;

View File

@ -1,4 +1,5 @@
using GFramework.Core.Abstractions.architecture;
using GFramework.Core.Abstractions.lifecycle;
using GFramework.Core.Abstractions.rule;
namespace GFramework.Core.Abstractions.model;
@ -6,10 +7,4 @@ namespace GFramework.Core.Abstractions.model;
/// <summary>
/// 模型接口,定义了模型的基本行为和功能
/// </summary>
public interface IModel : IContextAware, IArchitecturePhaseAware
{
/// <summary>
/// 初始化模型
/// </summary>
void Init();
}
public interface IModel : IContextAware, IArchitecturePhaseAware, IInitializable;

View File

@ -1,4 +1,5 @@
using GFramework.Core.Abstractions.architecture;
using GFramework.Core.Abstractions.lifecycle;
using GFramework.Core.Abstractions.rule;
namespace GFramework.Core.Abstractions.system;
@ -7,17 +8,4 @@ namespace GFramework.Core.Abstractions.system;
/// 系统接口,定义了系统的基本行为和功能
/// 该接口继承了多个框架相关的接口,提供了系统初始化和销毁能力
/// </summary>
public interface ISystem : IContextAware, IArchitecturePhaseAware
{
/// <summary>
/// 初始化系统
/// 在系统被创建后调用,用于执行系统的初始化逻辑
/// </summary>
void Init();
/// <summary>
/// 销毁系统
/// 在系统被销毁前调用,用于执行系统的资源清理逻辑
/// </summary>
void Destroy();
}
public interface ISystem : IContextAware, IArchitecturePhaseAware, ILifecycle;

View File

@ -1,4 +1,5 @@
using GFramework.Core.Abstractions.rule;
using GFramework.Core.Abstractions.lifecycle;
using GFramework.Core.Abstractions.rule;
namespace GFramework.Core.Abstractions.utility;
@ -6,10 +7,4 @@ namespace GFramework.Core.Abstractions.utility;
/// 上下文工具接口继承自IUtility和IContextAware接口
/// 提供具有上下文感知能力的工具功能
/// </summary>
public interface IContextUtility : IUtility, IContextAware
{
/// <summary>
/// 初始化上下文工具
/// </summary>
void Init();
}
public interface IContextUtility : IUtility, IContextAware, ILifecycle;

View File

@ -1,4 +1,5 @@
using GFramework.Core.Abstractions.enums;
using GFramework.Core.Abstractions.lifecycle;
using GFramework.Core.Abstractions.model;
using GFramework.Core.rule;
@ -12,7 +13,7 @@ public abstract class AbstractModel : ContextAwareBase, IModel
/// <summary>
/// 初始化模型调用抽象方法OnInit执行具体初始化逻辑
/// </summary>
void IModel.Init()
void IInitializable.Init()
{
OnInit();
}

View File

@ -17,7 +17,7 @@ public abstract class AbstractSystem : ContextAwareBase, ISystem
/// <summary>
/// 系统初始化方法,调用抽象初始化方法
/// </summary>
void ISystem.Init()
public void Init()
{
var name = GetType().Name;
_logger = LoggerFactoryResolver.Provider.CreateLogger(name);
@ -31,7 +31,7 @@ public abstract class AbstractSystem : ContextAwareBase, ISystem
/// <summary>
/// 系统销毁方法,调用抽象销毁方法
/// </summary>
void ISystem.Destroy()
public void Destroy()
{
_logger.Debug($"Destroying system: {GetType().Name}");

View File

@ -16,7 +16,7 @@ public abstract class AbstractContextUtility : ContextAwareBase, IContextUtility
/// <summary>
/// 初始化上下文工具类
/// </summary>
void IContextUtility.Init()
public void Init()
{
var name = GetType().Name;
// 获取上下文中的日志记录器
@ -30,8 +30,26 @@ public abstract class AbstractContextUtility : ContextAwareBase, IContextUtility
Logger.Info($"Context Utility initialized: {name}");
}
/// <summary>
/// 销毁上下文工具类实例
/// </summary>
public void Destroy()
{
var name = GetType().Name;
Logger.Debug($"Destroying Context Utility: {name}");
OnDestroy();
Logger.Info($"Context Utility destroyed: {name}");
}
/// <summary>
/// 抽象初始化方法,由子类实现具体的初始化逻辑
/// </summary>
protected abstract void OnInit();
/// <summary>
/// 虚拟销毁方法,可由子类重写以实现自定义销毁逻辑
/// </summary>
protected virtual void OnDestroy()
{
}
}