单例模式即所谓的一个类只能有一个实例,也就是类只能在内部实例化一次,然后提供这一实例,外部无法对此类实例化。
特点:
(1)只能有一个实例,并且实例全局唯一
(2)只能给自己创建自己的唯一实例,并且实例只能在类的内部发生
(3)需要将构造函数私有化
(4)需要提供一个供外部访问的变量
下面是一个简单的单例模式:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
class SimPattern
{
private static SimPattern _instance;//私有化内部接口
public static SimPattern Instance //外部接口
{
get //通过get方法获取内部接口
{
if (_instance==null)
{
_instance = new SimPattern();
}
return _instance;
}
}
private SimPattern() //构造函数
{
Debug.Log("单例构造函数执行");
}
public void Show()
{
Debug.Log("Show!!!!!!");
}
}
/
public class Simple_pattern : MonoBehaviour
{
void Start()
{
SimPattern simP = SimPattern.Instance;
simP.Show();
}
// Update is called once per frame
void Update()
{
}
}
上面的例子中,我们写了一个单例类SimPattern,里面声明了一个私有的内部接口(_instacne)和公开的的外部接口(Instance),外部接口使用get方法获取_instacne的值,若_instance的值不存在,我们就在内部实例化它,若存在则直接返回。
然后我们在start()函数中获取外部接口Instance给simP,然后调用里面的方法Show()。
我们运行看一下:
可以看到,我们获取Instance值后获取_instance发现不存在,然后进行实例化操作,实例化成功后传出_instance,同时自动调用构造函数,然后调用里面的Show()方法成功。