From 45ba75c0ada93f01900026b009ff36317dc49764 Mon Sep 17 00:00:00 2001
From: GwWuYou <95328647+GeWuYou@users.noreply.github.com>
Date: Thu, 1 Jan 2026 22:58:56 +0800
Subject: [PATCH] =?UTF-8?q?refactor(architecture):=20=E9=87=8D=E6=9E=84?=
=?UTF-8?q?=E6=8A=BD=E8=B1=A1=E6=9E=B6=E6=9E=84=E7=B1=BB=E7=9A=84=E5=88=9D?=
=?UTF-8?q?=E5=A7=8B=E5=8C=96=E5=92=8C=E9=94=9A=E7=82=B9=E7=AE=A1=E7=90=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 添加架构配置、服务和上下文依赖注入支持
- 将静态架构锚点名称改为动态实例字段
- 实现基于类型名称和哈希码的唯一锚点命名机制
- 更新锚点创建和生命周期绑定逻辑
- 移除硬编码的常量名称,提高架构实例唯一性
---
.../architecture/AbstractArchitecture.cs | 27 ++++++++++++-------
1 file changed, 17 insertions(+), 10 deletions(-)
diff --git a/GFramework.Godot/architecture/AbstractArchitecture.cs b/GFramework.Godot/architecture/AbstractArchitecture.cs
index 49943ab..621575e 100644
--- a/GFramework.Godot/architecture/AbstractArchitecture.cs
+++ b/GFramework.Godot/architecture/AbstractArchitecture.cs
@@ -1,4 +1,5 @@
-using GFramework.Core.architecture;
+using GFramework.Core.Abstractions.architecture;
+using GFramework.Core.architecture;
using GFramework.Core.constants;
using GFramework.Godot.extensions;
using Godot;
@@ -9,14 +10,12 @@ namespace GFramework.Godot.architecture;
/// 抽象架构类,为特定类型的架构提供基础实现框架。
/// 此类负责管理架构的初始化、生命周期绑定以及扩展模块的安装与销毁。
///
-public abstract class AbstractArchitecture : Architecture
+public abstract class AbstractArchitecture(
+ IArchitectureConfiguration? configuration = null,
+ IArchitectureServices? services = null,
+ IArchitectureContext? context = null
+) : Architecture(configuration, services, context)
{
- ///
- /// 架构锚点节点的唯一标识名称
- /// 用于在Godot场景树中创建和查找架构锚点节点
- ///
- private const string ArchitectureAnchorName = $"__{GFrameworkConstants.FrameworkName}__ArchitectureAnchor__";
-
///
/// 存储所有已安装的Godot架构扩展组件列表
/// 用于在架构销毁时正确清理所有扩展资源
@@ -29,6 +28,12 @@ public abstract class AbstractArchitecture : Architecture
///
private ArchitectureAnchor? _anchor;
+ ///
+ /// 架构锚点节点的唯一标识名称
+ /// 用于在Godot场景树中创建和查找架构锚点节点
+ ///
+ private string _architectureAnchorName = null!;
+
///
/// 标记架构是否已被销毁的状态标志
/// 用于防止架构被重复销毁,确保资源清理只执行一次
@@ -48,6 +53,8 @@ public abstract class AbstractArchitecture : Architecture
///
protected override void Init()
{
+ _architectureAnchorName =
+ $"__{GFrameworkConstants.FrameworkName}__{GetType().Name}__{GetHashCode()}__ArchitectureAnchor__";
AttachToGodotLifecycle();
InstallModules();
}
@@ -68,12 +75,12 @@ public abstract class AbstractArchitecture : Architecture
return;
// 防止重复挂载(热重载 / 多次 Init)
- if (tree.Root.GetNodeOrNull(ArchitectureAnchorName) != null)
+ if (tree.Root.GetNodeOrNull(_architectureAnchorName) != null)
return;
_anchor = new ArchitectureAnchor
{
- Name = ArchitectureAnchorName
+ Name = _architectureAnchorName
};
_anchor.Bind(Destroy);