单例模式
主要用于保证一个类只有一个实例,对外提供一个全局的访问点来获取该实例。是所有设计模式中最简单的模式。
实现代码(c#)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Singleton
{
/// <summary>
/// 功能描述:单例模式示例
/// 优点:对外保证提供唯一实例
/// 缺点:获取实例时需要花销时间,采用加锁技术,在多线程访问时花费的时间较多
/// </summary>
class Singleton
{
//存放本类私有对象
private static Singleton m_SingletonInstance;
//线程锁
private static readonly object m_myLock=new object();
/// <summary>
/// 私有构造函数
/// 阻止类的外部创建本类实例
/// </summary>
private Singleton()
{
}
/// <summary>
/// 返回本类唯一实例
/// 添加多线程防护
/// </summary>
/// <returns>本类实例</returns>
public static Singleton GetInstance()
{
if(m_SingletonInstance==null)//先判断实例是否存在
{
lock (m_myLock)//加锁,防护多线程访问
{
if (m_SingletonInstance == null)//防止创建多个实例
{
m_SingletonInstance = new Singleton();//创建实例
}
}
}
return m_SingletonInstance;
}
}
}
本文介绍单例模式的基本概念,通过C#代码示例展示了如何确保一个类只有一个实例,并提供了全局访问点。讨论了单例模式的优点及在多线程环境下使用加锁技术的开销。
1265

被折叠的 条评论
为什么被折叠?



