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

单例设计模式(C#) 懒汉模式

2016-08-05 11:23 302 查看

Lazy模式的两种方式

BaseSingle见 简单模式定义

方式1 代码

/// <summary>
///
/// </summary>
public class SafeLazySingle : BaseSingle
{

private static class SingleWapper
{
public static SafeLazySingle Instatce = new SafeLazySingle();
}

private SafeLazySingle()
{
}

public static SafeLazySingle GetInstance()
{
return SingleWapper.Instatce;
}

}


方式1 测试代码

internal delegate void InstanceFun();

public void LazySingleInstance()
{
SafeLazySingle.GetInstance().Method();
}

/// <summary>
/// 线程安全,lazy模式
/// </summary>
[Test]
public void MutilLazyTest()
{
MutilThreadTest(LazySingleInstance);
}


方式2 代码

public class LazySingle : BaseSingle
{

private static Lazy<LazySingle> _instance = new Lazy<LazySingle>(()=>new LazySingle());

private LazySingle()
{
}

public static LazySingle Instance { get { return _instance.Value; } }

}


方式2 测试代码

public void LazySingleMethod()
{
LazySingle.Instance.Method();
}

/// <summary>
/// 线程安全,lazy模式
/// </summary>
[Test]
public void MutilLazySingleTest()
{
MutilThreadTest(LazySingleMethod);

}


输出结果

DesignPattern.LazySingle.Method:39086322

DesignPattern.LazySingle.Method:39086322

DesignPattern.LazySingle.Method:39086322

DesignPattern.LazySingle.Method:39086322

DesignPattern.LazySingle.Method:39086322

DesignPattern.LazySingle.Method:39086322

DesignPattern.LazySingle.Method:39086322

DesignPattern.LazySingle.Method:39086322

DesignPattern.LazySingle.Method:39086322

DesignPattern.LazySingle.Method:39086322

DesignPattern.LazySingle.Method:39086322

DesignPattern.LazySingle.Method:39086322

DesignPattern.LazySingle.Method:39086322

DesignPattern.LazySingle.Method:39086322

DesignPattern.LazySingle.Method:39086322

DesignPattern.LazySingle.Method:39086322

DesignPattern.LazySingle.Method:39086322

DesignPattern.LazySingle.Method:39086322

DesignPattern.LazySingle.Method:39086322

DesignPattern.LazySingle.Method:39086322

DesignPattern.LazySingle.Method:39086322

DesignPattern.LazySingle.Method:39086322

……
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  单例设计模式-C#