63 lines
1.4 KiB
C#
63 lines
1.4 KiB
C#
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()
|
||
{
|
||
}
|
||
} |