C#单例模式(Singleton Pattern)实例教程
作者:shichen2014 时间:2022-11-23 10:44:05
本文以实例形式讲述了C#单例模式(Singleton Pattern)的实现方法,分享给大家供大家参考。具体实现方法如下:
一般来说,当从应用程序全局的角度来看,如果只允许类的一个实例产生,就可以考虑单例模式。
1.即时加载的单例模式
把类的实例赋值给类的一个静态字段。
class Program
{
static void Main(string[] args)
{
Logger log = Logger.GetInstance();
log.WriteToFile();
Console.Read();
}
}
public class Logger
{
private static Logger logger = new Logger();
private Logger(){}
public static Logger GetInstance()
{
return logger;
}
public void WriteToFile()
{
Console.WriteLine("错误被写入文件了~~");
}
}
2.延迟加载的单例模式
直到调用类的静态方法,才产生类的实例。
public class Logger
{
private static Logger logger = null;
private Logger(){}
public static Logger GetInstance()
{
if (null == logger)
{
logger = new Logger();
}
return logger;
}
public void WriteToFile()
{
Console.WriteLine("错误被写入文件了~~");
}
}
3.线程安全的单例模式
直到调用类的静态方法,保证只有一个线程进入产生类的实例。
public class Logger
{
private static Logger logger = null;
private static object lockObj = new object();
private Logger(){}
public static Logger GetInstance()
{
lock (lockObj)
{
if (logger == null)
{
logger = new Logger();
}
return logger;
}
}
public void WriteToFile()
{
Console.WriteLine("错误被写入文件了~~");
}
}
总结:静态单例类型的私有字段,私有构造函数,获取单例的方法是构成单例模式的3个必要元素。希望本文所述对大家的C#程序设计有所帮助。
标签:C#,单例,模式
0
投稿
猜你喜欢
Java 数据结构与算法系列精讲之时间复杂度与空间复杂度
2022-03-19 20:19:50
MyBatis-Plus多表联查(动态查询)的项目实践
2023-11-19 21:43:17
解决Weblogic部署war找不到spring配置文件的问题
2022-12-29 07:03:08
详解SpringBoot迭代发布JAR瘦身配置
2021-11-14 19:10:48
Android MediaPlayer实现音乐播放器实例代码
2021-05-26 22:58:05
Java如何处理延迟任务过程解析
2022-04-29 15:11:37
Android编程实现ListView滚动提示等待框功能示例
2022-11-15 13:50:15
Android开发之ListView的head消失页面导航栏的渐变出现和隐藏
2022-03-02 14:25:24
Unity实现简单虚拟摇杆
2023-08-04 17:33:09
C#实现的三种模拟自动登录和提交POST信息的方法
2022-05-28 01:49:32
简单实现Android闹钟功能
2022-05-23 16:17:53
springmvc限流拦截器的示例代码
2021-09-08 02:50:55
Flutter源码分析之自定义控件(RenderBox)指南
2022-09-08 21:17:28
Java多线程Thread基础学习
2023-04-17 17:12:21
Java 并发编程之线程挂起、恢复与终止
2022-02-18 11:51:51
Android编程中自定义dialog用法实例
2023-05-10 07:21:37
Java基础之练习打印三角形
2023-08-25 05:39:33
C# 正则表达式进阶
2022-12-26 01:56:32
C#9新特性之增强的模式匹配
2023-04-16 07:35:34
c# 编写的简单飞行棋游戏
2022-12-05 05:10:59