mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-03-22 10:34:30 +08:00
refactor(core): 重构核心框架生命周期管理
- 引入标准化的生命周期接口体系 (IInitializable, IDisposable, ILifecycle) - 将上下文工具类的初始化方法改为公共访问权限 - 为上下文工具类添加销毁功能和相关回调方法 - 更新模型和系统接口以使用新的生命周期接口 - 移除原有的独立初始化和销毁方法声明 - 统一框架组件的生命周期管理机制
This commit is contained in:
parent
b6554c5820
commit
efa069d2f5
12
GFramework.Core.Abstractions/lifecycle/IDisposable.cs
Normal file
12
GFramework.Core.Abstractions/lifecycle/IDisposable.cs
Normal file
@ -0,0 +1,12 @@
|
||||
namespace GFramework.Core.Abstractions.lifecycle;
|
||||
|
||||
/// <summary>
|
||||
/// 可销毁接口,为需要资源清理的组件提供标准销毁能力
|
||||
/// </summary>
|
||||
public interface IDisposable
|
||||
{
|
||||
/// <summary>
|
||||
/// 销毁组件并释放资源
|
||||
/// </summary>
|
||||
void Destroy();
|
||||
}
|
||||
12
GFramework.Core.Abstractions/lifecycle/IInitializable.cs
Normal file
12
GFramework.Core.Abstractions/lifecycle/IInitializable.cs
Normal file
@ -0,0 +1,12 @@
|
||||
namespace GFramework.Core.Abstractions.lifecycle;
|
||||
|
||||
/// <summary>
|
||||
/// 可初始化接口,为需要初始化的组件提供标准初始化能力
|
||||
/// </summary>
|
||||
public interface IInitializable
|
||||
{
|
||||
/// <summary>
|
||||
/// 初始化组件
|
||||
/// </summary>
|
||||
void Init();
|
||||
}
|
||||
6
GFramework.Core.Abstractions/lifecycle/ILifecycle.cs
Normal file
6
GFramework.Core.Abstractions/lifecycle/ILifecycle.cs
Normal file
@ -0,0 +1,6 @@
|
||||
namespace GFramework.Core.Abstractions.lifecycle;
|
||||
|
||||
/// <summary>
|
||||
/// 完整生命周期接口,组合了初始化和销毁能力
|
||||
/// </summary>
|
||||
public interface ILifecycle : IInitializable, IDisposable;
|
||||
@ -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;
|
||||
@ -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;
|
||||
@ -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;
|
||||
@ -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();
|
||||
}
|
||||
|
||||
@ -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}");
|
||||
|
||||
|
||||
@ -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()
|
||||
{
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user