单例设计模式

什么是单例设计模式?

  单例设计模式是一种创建型设计模式,该模式涉及到一个类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种
访问其唯一对象的方式,可以直接访问,不需要实例化该类的对象。

优缺点

  单例设计模式可以减少内存开销,提升运行效率,避免对资源的多重占用,并且可以实现数据共享。

实现:

  实现单例模式的关键是:构造方法私有化;提供访问唯一对象的方法。
  1.懒汉式(双检锁)
    所谓懒汉式即在调用时在创建对象。由于添加锁,效率不高。
  注意:由于指令重排序的原因,加上volatile很有必要。
  代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Singleton {
private volatile static Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
synchronized(Singleton.class) {
if (instance != null) {
instance = new Singleton();
}
}
}
return instance;
}
}

  2.饿汉式:
    利用类加载机制,解决了懒汉式中多线程访问不安全的问题,提高了效率,但有可能浪费内存。
  代码:

1
2
3
4
5
6
7
public class Singleton1 {
private static Singleton1 instance = new Singleton1();
private Singleton1(){}
private static Singleton1 getInstance() {
return instance;
}
}

应用:

  application对象、连接池。