手写单利模式

2019-08-29  本文已影响0人  galaxy_zheng

layout: post

title: '手写单利模式'

subtitle: '转载请注明出处'

date: 2019-08-29

categories: Android Java 单利模式

cover: 'http://bpic.588ku.com/back_pic/05/61/11/465b46e23671e61.jpg'

tags: Android Java 单利模式


1. 懒汉模式

public class SingletonDemo {
   private static SingletonDemo instance;
   private SingletonDemo(){

   }
   public static SingletonDemo getInstance(){
       if(instance==null){
           instance=new SingletonDemo();
       }
       return instance;
   }
}

2. 饿汉模式

public class SingletonDemo {
   private static SingletonDemo instance=new SingletonDemo();
   private SingletonDemo(){

  }
   public static SingletonDemo getInstance(){
       return instance;
   }
}

3. 双重校验锁法

public class SingletonDemo {
   private volatile static SingletonDemo instance;
   private SingletonDemo(){
       System.out.println("Singleton has loaded");
   }
   public static SingletonDemo getInstance(){
       if(instance==null){
           synchronized (SingletonDemo.class){
               if(instance==null){
                   instance=new SingletonDemo();
               }
           }
       }
       return instance;
   }
}

4. 静态类内部加载

public class SingletonDemo {
   private static class SingletonHolder{
       private static SingletonDemo instance=new SingletonDemo();
   }
   private SingletonDemo(){
       System.out.println("Singleton has loaded");
   }
   public static SingletonDemo getInstance(){
       return SingletonHolder.instance;
   }
}

5. 枚举方法

enum SingletonDemo{
   INSTANCE;
   public void otherMethods(){
       System.out.println("Something");
   }
}

public class Hello {
   public static void main(String[] args){
       SingletonDemo.INSTANCE.otherMethods();
   }
}
上一篇下一篇

猜你喜欢

热点阅读