web中怎么使用单例模式
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章主要为大家展示了"web中怎么使用单例模式",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"web中怎么使用单例模式"这篇文章吧。介绍单例模式,顾名思
千家信息网最后更新 2025年01月20日web中怎么使用单例模式
这篇文章主要为大家展示了"web中怎么使用单例模式",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"web中怎么使用单例模式"这篇文章吧。
介绍
单例模式,顾名思义就是只有一个实例,并且她自己负责创建自己的对象,这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。下面我们来看下有哪几种实现方式吧。
实现方式
1、使用lock ,保证方法只有一个线程可以进入。
////// 单例类 /// public class Singleton { private Singleton() { long lResult = 0; for (int i = 0; i < 100 - 000 - 000; i++) { lResult += i; } Thread.Sleep(2000); Console.WriteLine($"{this.GetType().Name}完成构造...."); } private static Singleton Instance = null; private static readonly object Singleton_Lock = new object(); public static Singleton CreateInstance() { if (Instance == null) { lock (Singleton_Lock)//保证方法块儿只有一个线程可以进入 { Console.WriteLine("进入lock排队...."); Thread.Sleep(1000); if (Instance == null) Instance = new Singleton(); } } return Instance; } public static void DoNothing() { Console.WriteLine("DoNothing"); } public void Show() { Console.WriteLine($"{this.GetType().Name} Show...."); } }
2、使用静态构造函数,由CLR调用,在类型第一次被使用前调用,且只调用一次。
////// 单例类 /// public class SingletonSecond { private SingletonSecond() { long lResult = 0; for (int i = 0; i < 100 - 000 - 000; i++) { lResult += i; } Thread.Sleep(2000); Console.WriteLine($"{this.GetType().Name}完成构造...."); } private static SingletonSecond Instance = null; ////// 静态构造函数,由CLR调用,在类型第一次被使用前调用,且只调用一次! /// static SingletonSecond() { Instance = new SingletonSecond(); } public static SingletonSecond CreateInstance() { return Instance; } public static void DoNothing() { Console.WriteLine("DoNothing"); } public void Show() { Console.WriteLine($"{this.GetType().Name} Show...."); } }
3、使用静态字段,由CLR调用,在类型第一次被使用前初始化,且只初始化一次。
////// 单例类 /// public class SingletonThird { private SingletonThird() { long lResult = 0; for (int i = 0; i < 100 - 000 - 000; i++) { lResult += i; } Thread.Sleep(2000); Console.WriteLine($"{this.GetType().Name}完成构造...."); } ////// 静态字段,由CLR调用,在类型第一次被使用前初始化,且只初始化一次! /// private static SingletonThird Instance = new SingletonThird(); public static SingletonThird CreateInstance() { return Instance; } public static void DoNothing() { Console.WriteLine("DoNothing"); } public int iNum = 0; public void Show() { Console.WriteLine($"{this.GetType().Name} Show..{iNum++}.."); } public void Add() { this.iNum++; } }
使用场景
1、需要生成唯一序列的环境。
2、需要频繁实例化然后销毁的对象。
3、创建对象时耗时过多或者耗资源过多,但又经常用到的对象。
4、方便资源相互通信的环境。
以上是"web中怎么使用单例模式"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
对象
模式
第一次
类型
静态
内容
只有
实例
方式
篇文章
函数
字段
方法
环境
线程
过多
保证
学习
帮助
频繁
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
以网络安全为主题的资料
数字射线成像系统软件开发
企业文化冠名词网络技术理念
珠海聊天软件开发外包
上易网络技术有限公司怎么样
软件开发角色职责
森林资源清查数据库
dnf服务器一直黑屏
深学网络安全基础知识
恒东网络技术
labview数据库读取慢
盘古科技有限公司网络技术
计算机网络安全与控制学科评估
互联网科技的发展的描述
electron连接单机数据库
崇明区软件开发预算
桐梓县中医院网络安全
软件开发都有哪些项目
drcom服务器管理
输入数据库名称判断正不正确
网络安全黑板报题目
没备案的域名如何使用国内服务器
软件开发免费技术支持
力控数据库备份
jsp读取数据库的账号密码
互联网科技园建设
c 对话框输入数据库
战地一服务器管理器
太仓天气预报软件开发
国二计算机数据库