zl程序教程

您现在的位置是:首页 >  其它

当前栏目

单例

单例
2023-09-11 14:16:05 时间

      private Singleton1() {};

      private static Singleton1 single = newSingleton1();

      public static Singleton1 getInstance() {

          return single;

     }

 }

 

懒汉式:

public class Singleton2 {

      private Singleton2() {}

      private static Singleton2 single=null;

      public tatic Singleton2 getInstance() {

           if (single == null) { 

              single = new Singleton2();

          } 

         return single;

     }

 }

线程安全:

public class Singleton3 {

        private Singleton3() {}

        private static Singleton3 single ;

        public static Singleton3 getInstance() {

              if(null== single){

                     synchronized(single ){

                            if(null== single){

                                   single = new Singleton3();

                            }

                     }

              }

              returnsingle;

         }

}

 

参考:

 

通过双重判断来保证单列设计模式在多线程中的安全性,

并且它在性能方面提高了很多。
一个单例还能写出花来吗? 单例可以说是最简单的一个设计模式了,单例模式要求只能创建一个对象实例。通常的写法是声明私有的构造函数,提供静态方法获取单例的对象实例。 常见的单例写法就是饿汉式、懒汉式、双重加锁验证、静态内部类和枚举的方式,写法可能大家都知道,不过针对不同的写法还是有可以继续深挖一下的地方,让我们从最简单的几种写法开始回顾单例,不想看前面的话直接往后翻好了。
你真的能写好一个单例么? 单例可能是 iOS 开发者最熟悉设计模式之一了。 我们的项目里头也使用了很多单例。 最近为了解决项目中单例的 bug 而花费了两天多的时间,发现用 ObjC 写好一个单例真的不容易!