supervisor-simulator/scripts/Core/Mvc.cs
2026-01-11 23:57:24 +08:00

63 lines
1.4 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Godot;
namespace Core;
/// <summary>
/// MVC 基础接口
/// 设计说明:
/// 1) View 只负责显示与输入Controller 负责修改 Model。
/// 2) View 与 Model 通过 Bind 绑定,避免静态单例。
/// 注意事项:
/// - View 内不要直接写业务结算逻辑。
/// 未来扩展:
/// - 可加入“脏标记刷新”与“差量更新”以减少 UI 开销。
/// </summary>
public interface IView<TModel>
{
/// <summary>
/// 绑定数据模型
/// </summary>
/// <param name="model">数据模型</param>
void Bind(TModel model);
}
/// <summary>
/// 控制器接口
/// </summary>
public interface IController
{
/// <summary>
/// 初始化控制器
/// </summary>
/// <param name="session">游戏会话</param>
void Initialize(GameSession session);
}
/// <summary>
/// 模型视图基类
/// </summary>
/// <typeparam name="TModel">模型类型</typeparam>
public abstract partial class ModelView<TModel> : Node, IView<TModel>
{
/// <summary>
/// 数据模型
/// </summary>
public TModel Model { get; private set; }
/// <summary>
/// 绑定数据模型
/// </summary>
/// <param name="model">数据模型</param>
public virtual void Bind(TModel model)
{
Model = model;
OnModelBound();
}
/// <summary>
/// 当模型绑定时调用
/// </summary>
protected virtual void OnModelBound()
{
}
}