单例模式是设计模式里考的最多的,单例模式在内存中只有一个实例,减少了系统内存的开支,由于单例模式在系统中只有一个实例,对那些在建立实例是开销较大的,可以通过产生一个实例,让它永久驻留内存,这样可以减少系统开销。单例模式可以避免对资源的多重占用,如对一个文件的多重写操作。可以通过单例模式在系统设置全局的访问点,优化和共享资源访问。
普通的饿汉式单例模式:
1 public class Singleton { 2 3 private static final Singleton instance= new Singleton(); 4 5 private Singleton(){ 6 } 7 8 public static Singleton getInstance(){ 9 return instance; 10 } 11 }
为了避免每次新建对象的单例模式:
1 public class Singleton1 { 2 3 private static final Singleton1 instance= null; 4 private Singleton1(){} 5 public static Singleton1 getInstance(){ 6 if(instance==null){ 7 return new Singleton1(); 8 }else { 9 return instance; 10 } 11 } 12 }
线程安全的懒汉式单例模式:
1 public class Singleton2 { 2 private static final Singleton2 instance=null; 3 private Singleton2(){} 4 public static synchronized Singleton2 getInstance(){ 5 if(instance==null){ 6 return new Singleton2(); 7 }else{ 8 return instance; 9 } 10 } 11 }