C# 单例模式
标签:一个 使用 public ++ 访问 color 防止 数据库 数据库连接池
/*
单例模式
饿汉式 :第一时间创建实例,类加载就马上创建
懒汉式 :需要才创建实例,延迟加载
单例模式会长期持有一个对象,不会释放
普通实例使用完后释放
单例可以只构造一次,提升性能(如果构造函数耗性能)
单例就是保证类型只有一个实例:计数器/数据库连接池
程序中某个对象,只有一个实例
*/
///
/// 单例之懒汉模式
///
public class SingleDemo
{
private static SingleDemo _singleDemo=null;
//创建访问这对象,用于加锁
private static object SingleDemo_lock = new object();//锁同步
///
/// 私有构造函数 防止来访者实例化
///
private SingleDemo()
{
}
public static SingleDemo WriteName()
{
if (_singleDemo == null)
{
lock (SingleDemo_lock)
{
if (_singleDemo == null)
{
Console.WriteLine("被创建");
_singleDemo = new SingleDemo();
}
Console.WriteLine("使用");
}
}
return _singleDemo;
}
}
///
/// 单例之饿汉模式
/// 使用静态字段
///
public class SingleDemo1
{
private static readonly SingleDemo1 _singleDemo1 = new SingleDemo1();
private SingleDemo1()
{ }
public static SingleDemo1 WriteName()
{
return _singleDemo1;
}
}
///
/// 单例之饿汉模式
/// 使用静态构造函数
///
public class SingleDemo2
{
private static int num = 0;
private static SingleDemo2 _singleDemo2 = null;
static SingleDemo2()
{
num += 2;
_singleDemo2 = new SingleDemo2();
Console.WriteLine(num);
}
public static SingleDemo2 WriteName()
{
num += 1;
Console.WriteLine(num);
return _singleDemo2;
}
}
///
/// 调用
///
///
static void Main(string[] args)
{
TaskFactory taskFactory = new TaskFactory();
List taskList = new List();
for (int i = 0; i 5; i++)
{
taskList.Add(taskFactory.StartNew(() =>
{
//SingleDemo singleDemo = SingleDemo.WriteName();
//SingleDemo1 singleDemo1 = SingleDemo1.WriteName();
SingleDemo2 singleDemo2 = SingleDemo2.WriteName();
}));
}
Console.ReadKey();
}
C# 单例模式
标签:一个 使用 public ++ 访问 color 防止 数据库 数据库连接池
原文地址:https://www.cnblogs.com/pushYYL/p/13080178.html
文章来自:
搜素材网的
编程语言模块,转载请注明文章出处。
文章标题:
C# 单例模式
文章链接:http://soscw.com/index.php/essay/58742.html
评论