手机
当前位置:查字典教程网 >编程开发 >C#教程 >基于静态Singleton模式的使用介绍
基于静态Singleton模式的使用介绍
摘要:什么是静态单例模式?静态单例模式(StaticSingletonPattern)是我在实践中总结的模式,主要解决的问题是在预先知道某依赖项为...

什么是静态单例模式?

静态单例模式(Static Singleton Pattern)是我在实践中总结的模式,主要解决的问题是在预先知道某依赖项为单例应用时,通过静态缓存该依赖项来提供访问。当然,解决该问题的办法有很多,这只是其中一个。

实现细节

复制代码 代码如下:

/// <summary>

/// 静态单例

/// </summary>

/// <typeparam name="TClass">单例类型</typeparam>

public static class Singleton<TClass> where TClass : class, new()

{

private static readonly object _lock = new object();

private static TClass _instance = default(TClass);

/// <summary>

/// 获取单例实例

/// </summary>

public static TClass GetInstance()

{

return Instance;

}

/// <summary>

/// 单例实例

/// </summary>

public static TClass Instance

{

get

{

if (_instance == null)

{

lock (_lock)

{

if (_instance == null)

{

_instance = new TClass(); // must be public constructor

}

}

}

return _instance;

}

}

/// <summary>

/// 设置单例实例

/// </summary>

/// <param name="instance">单例实例</param>

public static void Set(TClass instance)

{

lock (_lock)

{

_instance = instance;

}

}

/// <summary>

/// 重置单例实例

/// </summary>

public static void Reset()

{

lock (_lock)

{

_instance = default(TClass);

}

}

}

应用测试

复制代码 代码如下:

class Program

{

interface IInterfaceA

{

string GetData();

}

class ClassA : IInterfaceA

{

public string GetData()

{

return string.Format("This is from ClassA with hash [{0}].", this.GetHashCode());

}

}

static void Main(string[] args)

{

string data1 = Singleton<ClassA>.GetInstance().GetData();

Console.WriteLine(data1);

string data2 = Singleton<ClassA>.GetInstance().GetData();

Console.WriteLine(data2);

Console.ReadKey();

}

}

测试结果

基于静态Singleton模式的使用介绍1

【基于静态Singleton模式的使用介绍】相关文章:

C#垃圾回收机制的详细介绍

C#启动和停止windows服务的实例代码

基于TCP异步Socket模型的介绍

C#文件后缀名的详细介绍

C# 观察者模式实例介绍

C# Console类的具体用法

c# 随机函数的使用详解

基于C#中IDisposable与IEnumerable、IEnumerator的应用

一个可逆加密的类(使用3DES加密)

.net(c#)中的new关键字详细介绍

精品推荐
分类导航