单例模式
单例模式主要特点是:
- 一个类只能创建一个实例对象
- 这个实例对象能够自行创建(这里要记得把构造方法设置为私有,以免可以被重新new)
- 创建好的这个实例对象要使用关键字static共享到全局中去
单例模式主要分:
- 饿汉式:每次加载类的时候就直接创建好了当前的实例对象,并共享出去,参考代码如下:
/**
* 饿汉式 - 单例模式
*/
public class Singleton_eh {
//创建对象
private static final Singleton_eh singleton_eh = new Singleton_eh();
//私有化构造方法
private Singleton_eh(){}
//直接共享这个对象出去
public static Singleton_eh getInstance(){
return singleton_eh;
}
}
- 懒汉式:它是线程安全的,只有当调用当前类的时候才会去创建实例对象,要使用关键字
synchronized
和volatile
,分别修饰方法和变量,以保证同步。
/**
* 懒汉式 - 单例模式
*/
public class Singleton_lh {
//初始化定义这个对象为空
private static volatile Singleton_lh singleton_lh = null;
//初始化定义为private以免其他地方可以实例化
private Singleton_lh(){}
public static synchronized Singleton_lh getInstance(){
if (singleton_lh == null) {
singleton_lh = new Singleton_lh();
}
//最后返回一个实例
return singleton_lh;
}
}