根据慕课网课程的理解
http://www.imooc.com/learn/112
单列模式 : 有且只有一个
饿汉模式安全
public class Singleton(){ //1.将构造方法私有化,不容许外部直接建立对象 private Singleton(){} //2.建立一个类的惟一实例,使用private static修饰 private static Singleton instance=new Sngleton(); //3.提供一个用户获取实例的方法,使用public static修饰 public static Singleton getInstance(){ return instance; } }
饿汉模式当你加载的时候类自动帮你建立实例,就比如提早吃饭(饿)spa
解释
1.将构造方法私有化,不容许外部直接建立对象
答:由于外部Singleton singleton=new Singleton();就等于建立了实例,多个实例就不是单列模式线程
2.建立一个类的惟一实例,使用private static修饰
答:使用static是由于直接使用类来访问实例,Singleton singleton=Singleton.instance;
使用private是为了安全,封装一下code
3.提供一个用户获取实例的方法,使用public static修饰
答:使用static是由于他属于对象,加上static变成类全部对象
懒汉模式get
public class Singleton(){ //1.将构造方法私有化,不容许外部直接建立对象 private Singleton(){} //2.申明类的惟一实例,使用private static修饰 private static Singleton instance; //3.提供一个用户获取实例的方法,使用public static修饰 public static Singleton getInstance(){ if(instance=null){ instance=new Sngleton(); } return instance; } }
懒汉模式当你调用getInstance()方法的时候才会建立实例
当有第二我的来访问的话就不会在建立实例class
懒汉模式和饿汉模式的区别
饿汉式的特色:加载类时比较慢,可是运行时获取对象的速度比较快,线程安全
懒汉式的特色:加载类时比较快,可是运行时获取对象的速度比较慢,线程不安全方法
为何呢???
饿韩式当你加载类的时候就会实例化,而懒汉式是你须要的时候才会实例化。im