一、设计模式(构建模式)——01单例模式

2021-07-05  本文已影响0人  GameObjectLgy

懒汉式基础版,能实现最基础的功能,但是在多线程情况下,就没办法保证是单例了。
因此,需要在构造函数里在实例化的地方加一个锁。


image.png

饿汉式单例写法:利用静态方法的特性或者静态字段的特性。


image.png image.png

在Unity里使用时经常有以下几种使用方式:

public class GameObjectPool : MonoBehaviour
{
    public static GameObjectPool _instance;
    private void Awake()
    {
        _instance = this;
    }
}
public class GameObjectPool : MonoBehaviour
{
    private GameObjectPool() { }
    private static GameObjectPool _instance;
    public static GameObjectPool GetInstance()
    {
        if (_instance == null)
        {
            //动态的生成一个名为“GameObjectPool”的对象并将单例脚本附加上去
            _instance = new GameObject("GameObjectPool").AddComponent<GameObjectPool>();
 
        }
        return _instance;
    }
}
public class GameObjectPool : MonoBehaviour
{
    private static GameObjectPool _instance;
    public static GameObjectPool Instance
    {
        if (_instance == null)
        {
            _instance =GameObject.Find("GameManager").GetComponent<GameManager>();
 
        }
        return _instance;
    }
}

注:单例不能解决多线程并发问题。常用地方用在数据库连接池,线程池。

上一篇 下一篇

猜你喜欢

热点阅读