赞
踩
10万字总结java面试题和答案(八股文之二)的设计模板部分没有看
整个系统只能使用一个对象实例。
(1)饿汉式单例模式的写法:线程安全
(2)懒汉式单例模式的写法:非线程安全
(3)双检锁单例模式的写法:线程安全
不论是饿汉式还是懒汉式都有一个共同特点:类是public修饰的,而且类里面只有一个public,其余的都是private
。
实现步骤:
- 私有化构造器(private)
- 自行创建,并且用静态变量保存(static)
- 向外提供这个实例 (public)
- 强调这是一个单例,我们可以用final修饰
//方法一:最朴素的方式
public class Singleton {
public static final Singleton INSTANCE = new Singleton();
private Singleton() {
};
}
//方法二,使用枚举类型,枚举类型表示该类型的对象是有限的几个。我们可以限定为一个,就成了单例
public enum Singleton2 {
INSTANCE;
}
//方法三:使用静态代码块 实现复杂逻辑构造器的饿汉式单例模式
public class Singleton3 {
//私有化有参构造器
private Singleton3(String info){
this.info = info;
}
private String info;
public static final Singleton3 INSTANCE;
//在静态代码块中进行初始化实例对象
static {
Properties props = new Properties();
try {
props.load(Singleton3.class.getClassLoader().
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。