Java的模式
设计模式
- 创建模式
- 行为模式
- 结构模式
创建模式
- 单例模式
/*
* 单例模式设计要点:
* 1、构造方法私有
* 2、在内部包含一个静态的自身对象
* 3、通过公共的静态方法,返回一个2中的全类共享对象
*/
单例模式常见的有三种实现方式:
/*
* 1、预加载单例模式
* 在加载Singleton的时候就会产生Singleton对象,
* 不管使用者有没有调用getInstance方法;
* 缺点:
* 不管使用者需不需要Singleton实例,只要用到这个类,就会产生对象;
* 优点:
* 支持高并发;
*/
private static Singleton instance = new Singleton();
private Singleton() {
}
public static Singleton getInstance() {
return instance;
}
/*
* 2、延迟加载单例模式
* 在第一次真正需要获取Singleton对象的时候,才产生对象,以后都返回这同一对象
* 缺点:
* 不支持高并发
* 优点:
* 需要时才产生对象
*/
private static Singleton instance;
private Singleton() {
}
public static Singleton getInstance() {
if (instance==null) {
instance = new Singleton();
}
return instance;
}
/*
* 3、双锁机制的单例模式
* 优点:
* 既支持高并发,又支持延迟加载
* 缺点:
* jdk1.8以后才支持该语法
*/
private static Singleton instance;
private Singleton() {
}
public static Singleton getInstance() {
if (instance==null) {
synchronized(Singleton.class) {
if (instance==null) {
instance = new Singleton();
}
}
}
return instance;
}
补充,牛逼java程序员早就有了更好的代码级解决办法,别眨眼,看仔细!
/*
* 在代码级别最好的单例模式的实现
* 静态成员内部类
*/
public static class SingletonHolder {
private static Singleton instance = new Singleton();
}
private Singleton() {
}
public static Singleton getInstance() {
return SingletonHolder.instance;
}