概念:所谓单例设计模式是指某个类只可以创建一个对象。
特点:
1. 最多只有一个对象。
2. 必须自己创建自己的唯一对象。
3. 必须提供一个方法去获取到唯一的对象。
单例设计模式是java设计模式中最基础的设计模式,也是最简单的设计模式,然而它却有着极其重要的存在意义,例如,一个军队里只有一个最高指挥官,如果一个军队中有多个最高指挥官时,当多个最高指挥官同时下达不同的命令时,此时士兵就不知道应该去执行哪个指挥官的命令了。jdbc连接池就是单例的典型应用。
下面来看看单例模式的一些实现方法:
1. 饿汉式:
public class Singleton {
//事先定义好一个静态对象
private static final Singleton singleton = new Singleton();
//默认构造方法私有化,防止在类外面调用构造方法生成对象
private Singleton() {
}
//静态方法返回定义好的静态对象
public static Singleton getInstance() {
return singleton;
}
}
2. 懒汉式:
public class Singleton {
//定义一个null对象
private static Singleton singleton = null;
//默认构造方法私有化,防止在类外面调用构造方法生成对象
private Singleton() {
}
//静态工厂方法,当singleton为null时生成一个对象,否则直接返回该对象
public static synchronized Singleton getInstance() {
if(null == singleton) {
singleton = new Singleton();
}
return singleton;
}
}
3. 静态内部类
public class Singleton {
private static class SingletonHolder {
private static Singleton INSTANCE = new Singleton();
}
private Singleton() {}
public static Singleton getInstance() {
return SingletonHolder.INSTANCE;
}
}
不论哪一种实现方法,都是通过私有化默认构造方法,然后通过静态工厂方法获取单例对象。