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
……