zoukankan      html  css  js  c++  java
  • 单例模式

    1:饥饿模式

     public class Class1
        {
            public readonly static Class1 c1 = new Class1();//直接创建一个
            //构造函数私有化 禁止其他地方创建实例
            private Class1()
            { }
            //对外提供一个方法来返回
            public static Class1 GetSign()
            {
                return c1;
            }
        }

    2:懒加载

    public class Class2
        {
            private static Class2 c2 = null;
            private readonly static object objLock = new object();
    
            private Class2()
            {
    
            }
            public static Class2 GetSign()
            {
                if (c2 == null)//提高性能 是null的时候才加锁
                {
                    lock (objLock)//加锁 为了 线程安全
                    {
                        if (c2 == null)
                        {
                            c2 = new Class2();
                        }
                    }
                }
                return c2;
            }
        }

    进阶的懒惰:参考的:https://www.cnblogs.com/leolion/p/10241822.html

     public sealed class Class3
        {
            //构造函数私有化
            //说实话 这种我还不太懂,可以去看看原文
            private Class3()
            { }
            public static Class3 c3 { get { return GetSign.c3; } }
    
            private class GetSign
            {
                // 显式静态构造告诉C#编译器
                // 未标记类型BeforeFieldInit
                static GetSign()
                {
                }
    
                internal static readonly Class3 c3 = new Class3();
            }
          
    
        }

    进阶2:使用Lazy

    public sealed class Class4
        {
            //延迟初始化
            // 初始化 System.Lazy`1 类的新实例。 当延迟初始化发生时,将使用指定的初始化函数和初始化模式。
            //第二个参数 表示 线程安全为true 
            //哈哈,我也第一次晓得这个方式。新奇
            private static readonly Lazy<Class4> lazyC4 = new Lazy<Class4>(() => new Class4(),true);
            public static Class4 c4 { get { return lazyC4.Value; } }
            private Class4()
            { }
        }
  • 相关阅读:
    PHP邮件群发程序
    特牛的PHP分页
    短信平台PHP代码一点通
    PHP工厂模式的好处
    PHP单例模式经典讲解
    php excel类 ,phpExcel使用方法介绍
    php5魔术函数、魔术常量
    PHP设计模式漫谈之工厂模式
    PHP跨站刷票代码
    PHP类的静态(static)方法和静态(static)变量
  • 原文地址:https://www.cnblogs.com/fanlin92/p/13743684.html
Copyright © 2011-2022 走看看