单例模式实例

这篇具有很好参考价值的文章主要介绍了单例模式实例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

public class CylSingleton<T> where T : CylSingleton<T>, new()
{
	private static T _instance;

		public static T Instance
		{
			get
			{
				if (_instance == null)
				{
					Initialize();
				}
				return _instance;
			}
		}

		public static bool HasInstance => _instance != null;

		public static void Initialize()
		{
			if (_instance == null)
			{
				_instance = new T();
				_instance.OnInitialize();
			}
		}
		
		public static void Destroy()
		{
			if (_instance != null)
			{
				_instance.OnUnInitialize();
				_instance = null;
			}
		}
		
		protected virtual void OnInitialize() {}
		protected virtual void OnUnInitialize() {}
}

	public class ExposedSingleton<T> : MonoBehaviour where T : ExposedSingleton<T>
	{
		protected static T _instance;
		
		public static T Instance => _instance;
		
		public static bool HasInstance => _instance;
		
		public static void Destroy()
		{
			if (_instance != null)
			{
				GameObject.Destroy(_instance.gameObject);
				_instance = null;
			}
		}
	}
	
    public class MonoSingleton<T> : MonoBehaviour where T : MonoSingleton<T>
    {
        protected static T _instance;

        public static T Instance
        {
            get
            {
                if(_instance == null)
                {
	                CreateInstance();
                }
                return _instance;
            }
        }

        public static bool HasInstance => _instance;

        public static void CreateInstance()
        {
	        if (_instance) return;
	        
	        var obj = new GameObject(typeof(T).Name);
	        _instance = obj.AddComponent<T>();
	        if (!Application.isPlaying)
	        {
		        obj.hideFlags = HideFlags.HideAndDontSave;
	        }

	        if (Application.isPlaying)
	        {
		        DontDestroyOnLoad(_instance);
	        }
        }
        
        public static void Destroy()
        {
	        if (_instance != null)
	        {
		        GameObject.Destroy(_instance.gameObject);
		        _instance = null;
	        }
        }

文章来源地址https://www.toymoban.com/news/detail-408981.html

到了这里,关于单例模式实例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深入理解单例模式:如何确保一个类只有一个实例?

    欢迎来到英杰社区 https://bbs.csdn.net/topics/617804998 欢迎来到阿Q社区 https://bbs.csdn.net/topics/617897397 单例模式(Singleton Pattern)是一种常用的设计模式,用于确保一个类只有一个实例,并提供全局访问点。虽然在表面上看起来很简单,但深入理解单例模式可以帮助我们更好地应用它

    2024年01月17日
    浏览(51)
  • DCL 单例模式设计为什么需要 volatile 修饰实例对象

     DCL 问题,是在基于双重检查锁设计下的单例模式中,存在不 完整对象的问题。而这个不完整对象的本质,是因为指令重排序导致的。 当我们使用 instance=new DCLExample()构建一个实例对象的时候,因为 new 这个操作并不是原子的。所以这段代码最终会被编译成 3 条指令: 为对象

    2024年02月08日
    浏览(49)
  • hive 谓词下推实例分析(on与where的区别)

    t1 表 t2 表 t1 left join t2 t1 left join t2 on a.id=b.id where a.dt =‘01’,保留表谓词下推,map端提前过滤 t1 left join t2 on a.id=b.id and a.dt =‘01’,保留表非谓词下推,reduce端过滤 说明 :保留表应用谓词下推,提前过滤,会把不符合条件的数据提前过滤掉;保留表不应用谓词下推,不提前

    2024年02月09日
    浏览(39)
  • 【单例模式】饿汉模式和懒汉模式的单例模式

    设计模式是一种 在软件设计中经过验证的解决问题的方案或者模版 。它们是从实践中总结出来的,可以帮助解决常见的设计问题,提高代码的重用性、维护性和扩展性。 设计模式可以分为三大类: 创建型模式(Creational Patterns) :创建型模式关注对象的实例化过程,包括如

    2024年02月16日
    浏览(68)
  • 设计模式学习(一)单例模式补充——单例模式析构

    目录 前言 无法调用析构函数的原因 改进方法 内嵌回收类 智能指针 局部静态变量 参考文章 在《单例模式学习》中提到了,在单例对象是通过 new 动态分配在堆上的情况下,当程序退出时,不会通过C++的RAII机制自动调用其析构函数。本文讨论一下这种现象的原因以及

    2024年03月19日
    浏览(53)
  • Java单例模式详解--七种单例模式实现+单例安全+实际应用场景

    保证了一个类只有一个实例,并且提供了一个全局访问点。单例模式的主要作用是节省公共资源,方便控制,避免多个实例造成的问题。 实现单例模式的三点: 私有构造函数 私有静态变量维护对象实例 公有静态方法提供获取实例对象 七种单例模式实现 1.静态类:第一次运

    2024年02月04日
    浏览(62)
  • 【地铁上的设计模式】--创建型模式:单例模式(五)--枚举单例

    什么是枚举单例 枚举单例是指使用枚举类型来实现单例模式,它是单例模式中最简单、最安全的一种实现方式。在枚举类型中定义的枚举值只会被实例化一次,即保证了全局唯一的实例,而且实现简单、线程安全、防止反射攻击、支持序列化等。 如何实现枚举单例 实现枚举

    2023年04月25日
    浏览(81)
  • JavaEE 初阶篇-深入了解单例模式(经典单例模式:饿汉模式、懒汉模式)

    🔥博客主页: 【 小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录         1.0 单例模式的概述         2.0 单例模式 - 饿汉式单例         2.1 关于饿汉式单例的线程安全问题         3.0 单例模式 - 懒汉式单例         3.1 关于懒汉式单例的线程安全问题      

    2024年04月15日
    浏览(48)
  • 单例模式有几种写法?【如何实现单例模式?】

    专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录) 文章字体风格: 红色文字表示:重难点★✔ 蓝色文字表示:思路以及想法★✔ 如果大家觉得有帮助的话,感谢大家帮

    2024年02月07日
    浏览(45)
  • 设计模式——C++11实现单例模式(饿汉模式、懒汉模式),与单例的进程

    本文将介绍单例模式,使用C++11实现多个版本的单例模式,分析各自的优缺点。最后提及如何实现一个单例的进程。 单例模式属于创建型模式,提供了一种创建对象的方式。 单例模式确保一个类只有一个实例。通过一个类统一地访问这个实例。 思想:将构造函数设置为私有

    2024年02月09日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包