定义
Ensure a class has only one instance, and provid a global point of access to it.
(确保莫一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。)
实现方法
1.提供private构造函数2.提供一个可以访问private的实例公共的方法
实现方式
第一种形式:懒汉式,也是常用的形式。
public class SingletonClass {
private static SingletonClass instance = null;
public synchronized static SingletonClass getInstance() {
if (instance == null)
instance = new SingletonClass();
return instance;
}
private SingletonClass() {
}
}
第二种形式:饿汉式
public static class Singleton{
//在自己内部定义自己的一个实例,只供内部调用
private static final Singleton instance=new Singleton();
private Singleton(){
//dosomething
}
//这里提供了一个供外部访问本class的静态方法,可以直接访问
public static Singleton getInstance(){
return instance;
}
}
第三种形式: 双重锁的形式。
public static classSingleton{
privatestaticSingletoninstance=null;
privateSingleton(){
//dosomething
}
public static SingletongetInstance(){
if(instance==null){
synchronized(Singleton.class){
if(null==instance){
instance=newSingleton();
}
}
}
returninstance;
}
}
//这个模式将同步内容下方到if内部,提高了执行的效率,不必每次获取对象时都进行同步,
只有第一次才同步,创建了以后就没必要了