基于静态Singleton模式的使用介绍
基于静态Singleton模式的使用介绍
发布时间:2016-12-28 来源:查字典编辑
摘要:什么是静态单例模式?静态单例模式(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

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新C#教程学习
热门C#教程学习
编程开发子分类