请详细介绍单例模式,单例模式的作用,使用场景,以及单例模式的分类,最后针对不同分类请写出对应的代码
时间: 2023-06-04 07:07:57 浏览: 114
单例模式是一种创建型设计模式,它的主要目的是确保只有一个对象能够被创建,并提供对该对象的全局访问点。使用单例模式可以让代码更加简洁、易于维护,并且避免了代码中可能存在的重复实例化对象的问题。
单例模式的使用场景比较多,例如:
- 当需要确保在整个应用程序中只有一个实例对象存在时
- 当需要控制某些资源的共享访问时
- 当需要提供全局访问点以便于进行统一的操作和控制时
单例模式根据实现方式可以分为以下几种:
- 饿汉式单例模式
- 懒汉式单例模式
- 双重检查锁单例模式
- 静态内部类单例模式
- 枚举单例模式
下面给出每种单例模式的代码实现。
1. 饿汉式单例模式:
```
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton() {}
public static Singleton getInstance() {
return instance;
}
}
```
2. 懒汉式单例模式:
```
public class Singleton {
private static Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
```
3. 双重检查锁单例模式:
```
public class Singleton {
private static volatile Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
```
4. 静态内部类单例模式:
```
public class Singleton {
private static class SingletonHolder {
private static final Singleton instance = new Singleton();
}
private Singleton() {}
public static Singleton getInstance() {
return SingletonHolder.instance;
}
}
```
5. 枚举单例模式:
```
public enum Singleton {
INSTANCE;
// 该单例对象具备一些自己的属性和方法
// ...
public void doSomething() {
// ...
}
}
```
这就是单例模式的详细介绍,以及它的作用、使用场景以及分类,并且给出了每种分类的代码实现。
阅读全文