unity - MVC架構(gòu)基類簡單實現(xiàn)

using System;
/// <summary>
/// 數(shù)據(jù)模型
/// </summary>
public abstract class Model
{
//初始化方法
public abstract void Init();
//建立注冊機制 用于通知所有View層去更新數(shù)據(jù)
private event Action<Model> updateEvent;
//注冊事件 一旦注冊就更新
public void AddUpdateEvent(Action<Model> action)
{
updateEvent += action;
CallUpdateEvent();
}
//通知View層更新UI
public void CallUpdateEvent()
{
updateEvent?.Invoke(this);
}
}
/// <summary>
/// 泛型數(shù)據(jù)模型層
/// </summary>
/// <typeparam name="T">繼承Model本身的類</typeparam>
public abstract class Model<T> : Model where T : Model<T> ,new()
{
private static T model;
public static T Instance
{
get
{
if (model == null)
{
model = new T();
model.Init();
}
return model;
}
}
}
------------------------------------------------------------
using UnityEngine;
public abstract class View : MonoBehaviour
{
public abstract void UpdateView(Model Model);
}
------------------------------------------------------------
using UnityEngine;
public abstract class Controller : MonoBehaviour
{
protected void Bind(View view,Model model)
{
model.AddUpdateEvent(view.UpdateView);
}
}