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);