单例模式多例模式,优缺点,Java怎么实现单例模式
时间: 2024-10-15 20:02:03 浏览: 33
单例模式是一种常用的软件设计模式,它保证一个类在整个应用中只有一个实例,并提供全局访问点。这种模式常用于需要控制资源访问、管理数据库连接或配置等场景。
优点:
1. 管理共享资源,避免创建过多同类对象导致性能开销。
2. 提供了全局访问入口,使得其他部分能方便地获取到唯一实例。
3. 有利于简化系统架构,降低复杂度。
缺点:
1. 非线程安全版本的单例可能导致多次实例化,如果多个线程同时尝试创建实例。
2. 如果单例类有状态,难以测试和维护。
3. 过于频繁地使用可能会降低系统的灵活性。
Java中实现单例模式主要有三种常见方式:
1. **饿汉式**:在类加载时就初始化单例,保证线程安全但内存消耗较大。
```java
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton() {}
public static Singleton getInstance() { return instance; }
}
```
2. **懒汉式**(双重检查锁定):只有当需要时才初始化,可以提高效率,但在多线程环境中需要同步。
```java
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;
}
}
```
3. **静态内部类**:利用JVM的类装载机制保证线程安全性,同时也保持了单例的私有化。
```java
public class Singleton {
private static class SingletonInstanceHolder {
private static final Singleton INSTANCE = new Singleton();
}
private Singleton() {}
public static Singleton getInstance() { return SingletonInstanceHolder.INSTANCE; }
}
```
阅读全文