单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。显然单例模式的要点有三个:一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。
通常,习惯性的把单例模式分为两种,饿汉模式和饱汉模式
饿汉模式:
class ehanmoshi
{
//饿汉模式 (不管后面用不用,一来就先分配空间)
public static ehanmoshi ehan = new ehanmoshi();
private ehanmoshi(){ }
public static ehanmoshi GetSingleTon()
{
return ehan;
}
}
饱汉模式:
class baohanmoshi
{
//饱汉模式 要用的时候才分配空间
public static int baohanNum = 0;
public static baohanmoshi baohan;
private int Name;
private baohanmoshi(){ }
public static baohanmoshi GetClass()
{
if (baohan == null)
{
baohan = new baohanmoshi();
baohanNum++;
baohan.Name = baohanNum;
}
return baohan;
//一把锁机制
//lock (new object())
//{
// if (baohan == null)
// {
// baohan = new baohanmoshi();
// baohanNum++;
// baohan.Name = baohanNum;
// }
// return baohan;
//}
//两把锁机制
//if (baohan == null)
//{
// lock (new object())
// {
// if (baohan == null)
// {
// baohan = new baohanmoshi();
// baohanNum++;
// baohan.Name = baohanNum;
// }
// return baohan;
// }
//}
}
public int GetName() {
return Name;
}
}