您的位置:首页 > 编程语言 > C#

C# 设计模式-单件(Singleton)

2017-12-26 18:47 513 查看
一个类仅有一个实例,并提供访问实例的全局访问点

单件类:

using System;

namespace Singleton
{
/// <summary>
/// 单件
/// </summary>
class SingletonClass
{
private static SingletonClass instance;

//私有构造函数
private SingletonClass()
{
}
//获取唯一实例(延迟初始化,但是多线程可能获取多个实例,不能确保线程安全)
public static SingletonClass Instance()
{
if (instance == null)
{
instance = new SingletonClass();
}
return instance;
}
}

/// <summary>
/// 线程安全单件
/// </summary>
class ThreadSafeSingletonClass
{
private static ThreadSafeSingletonClass instance = new ThreadSafeSingletonClass();

//私有构造函数
private ThreadSafeSingletonClass()
{
}
//获取唯一实例(线程安全,但是不能延迟初始化)
public static ThreadSafeSingletonClass Instance()
{
return instance;
}
}
}


调用:

using System;

namespace Singleton
{
class Program
{
static void Main(string[] args)
{
SingletonClass singleton1 = SingletonClass.Instance();
SingletonClass singleton2 = SingletonClass.Instance();
//判断两个对象实例是否相等
if (singleton1 == singleton2)
{
Console.WriteLine("singleton1等于singleton2");
}

ThreadSafeSingletonClass threadSafeSingleton1 = ThreadSafeSingletonClass.Instance();
ThreadSafeSingletonClass threadSafeSingleton2 = ThreadSafeSingletonClass.Instance();
//判断两个对象实例是否相等
if (threadSafeSingleton1 == threadSafeSingleton2)
{
Console.WriteLine("threadSafeSingleton1等于threadSafeSingleton2");
}
Console.Read();
}
}
}


结果:



参考资料:《设计模式-可复用面对对象软件的基础》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息