您的位置:首页 > 其它

个人理解的单例模式

2014-06-07 15:42 399 查看
下面是个人理解的单例模式:

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

namespace ConsoleApplication6
{
public  sealed class Singleton
{
static Singleton instance;
/// <summary>
/// 为了避免实例不唯一,构造方法私有化
/// </summary>
private Singleton() { }
public static Singleton Instance
{
get
{
return instance == null ? new Singleton() : instance;
}
}
public void dd(){
Console.WriteLine("fdd");
Console.ReadLine();
}

}
}


主方法调用如下:

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

namespace ConsoleApplication6
{
class Program
{
static void Main(string[] args)
{
Singleton.Instance.dd();

}
}
}


当然这有时候不能保证单例唯一,可以用lock方法来实现如下:

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

namespace ConsoleApplication6
{
public sealed class Singleton
{
static Singleton instance;
static readonly object padlock = new object();

public Singleton() { }
public static Singleton Instance
{

get
{
if (instance == null)
{
lock (padlock)
{
if (instance == null)
{
instance=new Singleton() ;
}

}

}
return instance;
}
}
public void dd()
{
Console.WriteLine("fdd");
Console.ReadLine();
}

}
}


欢迎交流
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: