抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

我看了看手上的牌,明白自己无牌可出

因为在工作中开始对这个框架开始接触,而平时在学校,其实对于框架了解的是比较少的,也是简单做下记录。

MVC的构成

MVC的初衷是分离逻辑,使得业务开发更为清晰分明,可以将一个业务拆成以下三个部分:

  • Model:单例,数据存储检索,也可以带有逻辑来更新数据

  • View:数据展示的视图但不包含业务逻辑

  • Controller:单例,接收输入,调用模型和视图完成用户请求

MVC优缺点

优点

  1. 局部上讲,在游戏开发中的Controller只负责收发消息,在不涉后端的地方对数据进行更改与提取的话只需要跟Model交互即可,更好地去管理了前后端通讯的时机

  2. 全局上讲,在View的数量偏多时,可以方便地复用数据调用接口,后期拓展业务,增加需求也很方便

  3. 业务分离,每个业务拥有一套MVC,同时前后端基于Controller作为中介,协同开发会容易很多

  4. 框架实现难度简单,主要是单例

缺点

  1. 依赖事件,小项目中的逻辑写起来过于冗余,尤其在后端没有或者需求量较少时会使得Controller的存在感很低

  2. 在不存在可分类业务的情况下,MVC是几乎没有意义的

  3. 不正确使用时会导致性能问题,比如Model到Controller之间的额外调用甚至反复调用

单例

在Unity中的单例(不继承MonoBehavior),饿汉模式加锁,可被继承

using System;

public abstract class Singleton<T> where T: Singleton<T>
{
    private static T _instance;
    private static readonly object _locker = new object();
    protected Singleton() {}
    public static T Instance
    {
        get 
        {
            if (_instance == null)
            {
                lock(_locker)
                {
                    if (_instance == null) 
                        _instance = Activator.CreateInstance<T>();
                        //可用 _instance = new Singleton();
                }
            }
            return _instance;
        }
    }
}

继承方法:

public class GameManager : Singleton<GameManager> {}

评论