单例

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
public class Singleton
{
/// <summary>
/// 构造函数必须是私有的,
///这样在外部便无法使用new来创建该类的实例
/// </summary>
private Singleton()//作用是因为定义了私有的构造函数,外界构造实例的时候,是通过构造函数来创建新对象实例的
{

}

 

/// <summary>
/// 定义一个素有的静态全局变量来保存该类的唯一实例
/// </summary>
private static Singleton singleton;

 

/// <summary>
/// 定义一个只读静态对象,
///且这个对象是在程序运行是创建的
/// </summary>
///
private static readonly object syncObject = new object();//作用是什么?
//这是一个锁,用于用相同的这个对象去锁住共同访问的内容

 

 


/// <summary>
/// 定义一个全局访问点
/// 设置为静态方法
/// 则在类的外部便无需实例化就可以使用该方法了
/// </summary>
/// <returns></returns>
public static Singleton GetInstance()
{
//这里保证只实例化一次
//即在第一次调用时实例化
//以后调用就不会再实例化
//第一重singleton==null
if (singleton == null)
{
lock (syncObject)
{
if(singleton==null)
{
singleton = new Singleton();
}
}
}
return singleton;

}

}

static void Main(string[] args)
{
Singleton sigle=Singleton.GetInstance();
}
}

posted @ 2015-12-14 09:35  pcc  阅读(136)  评论(0)    收藏  举报