设计模式之一:单例模式SingleTon

单例模式详解
本文详细介绍了单例模式在单线程及多线程环境下的实现方式,并提供了饱汉式和饿汉式的具体代码示例。

 

 
    
//单线程下的单例模式    
 
    
class SingleTon
    {
        
private static SingleTon _inst;
        
private static SingleTon() { }
        
public SingleTon Instance
        {
            
get
            {
                
if (null != _inst)
                {
                    _inst 
= new SingleTon();
                }
                
return _inst;
            }
        }
    }

 

 
    //多线程下的单例模式(饱汉式)
    class SingleTon
    {
        
private static volatile SingleTon _inst;
        
private static object lockhelper = new object();
        
private SingleTon() { }
        
public SingleTon Instance
        {
            
get
            {
                
if (null != _inst)
                {
                    
lock (lockhelper)
                    {
                        
// 此处使用双重判断防止多线程已经进入第一个判断然后等待解锁后创建实例
                        if (null != _inst)  
                        {
                            _inst 
= new SingleTon();
                        }
                    }
                }
                
return _inst;
            }
        }
    }
 
    //更简单的实现(饿汉式)
    //readonly 保证实例只能在声明时候或在静态构造器里初始化
    sealed class SingleTon
    {
        
private SingleTon() { }
        
public static readonly SingleTon Instance = new SingleTon();
    }

 

转载于:https://www.cnblogs.com/kakaliush/archive/2011/07/01/2095142.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值