标签:构造 数据 creat var 获取 初始 唯一性 构造函数 lock
单例模式:是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例
显然单例模式的要点有三个;一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。
从具体实现角度来说,就是以下三点:一是单例模式的类只提供私有的构造函数,二是类定义中含有一个该类的静态私有对象,三是该类提供了一个静态的公有的函数用于创建或获取它本身的静态私有对象。
频繁访问数据库或文件的对象。
优点
缺点
不合理的单例设计将导致程序编写十分麻烦。
不需要保障唯一性的对象使用单例,将会起反作用
//通过双if 夹lock的方式,实现单例模式
public class Singleton
{
public Singleton()
{
Console.WriteLine("创建一个对象");
}
private static Singleton singleton;
private static object singletonLock = null;
public static Singleton CreateInstance()
{
if (singleton == null)//保证初始化后的线程不需要等待锁
{
lock (singletonLock)
{
if (singleton == null)
{
singleton = new Singleton();
}
}
}
return singleton;
}
public void Show()
{
Console.WriteLine("单例模式");
}
}
}
//静态构造函数实现单利
public class SingletonTwo
{
private SingletonTwo()
{
Console.WriteLine("创建一个对象");
}
private static SingletonTwo singleton = null;
static SingletonTwo()
{
singleton = new SingletonTwo();
}
public static SingletonTwo CreateInstance()
{
return singleton;
}
public void Show()
{
Console.WriteLine("单例模式");
}
}
//静态变量实现单利
public class SingletonThird
{
private SingletonThird()
{
Console.WriteLine("创建一个对象");
}
private static SingletonThird singleton =new SingletonThird();
public static SingletonThird CreateInstance()
{
return singleton;
}
public void Show()
{
Console.WriteLine("单例模式");
}
}
// var singleton= Singleton.CreateInstance();//双if + lock 实现 //var singleton = SingletonThird.CreateInstance();//静态变量 第一次使用的时候初始化,只初始化一次 var singleton = SingletonTwo.CreateInstance();//构造函数实现单利 singleton.Show();
标签:构造 数据 creat var 获取 初始 唯一性 构造函数 lock
原文地址:https://www.cnblogs.com/liaokui/p/9784994.html