用Java实现单例模式
时间: 2024-05-07 15:22:19 浏览: 109
单例模式是一种创建型设计模式,它确保一个类只有一个实例,并提供全局访问点。在 Java 中,实现单例模式可以采用以下两种方式:
1. 懒汉式单例模式(Lazy Initialization)
懒汉式单例模式是指在调用获取实例方法时才会创建实例。这种方式的优点是节省了系统资源,但是第一次获取实例时需要较长的等待时间。
```java
public class Singleton {
private static Singleton instance;
private Singleton() {
}
public static synchronized Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
```
在懒汉式单例模式中,我们定义了一个私有的静态变量 `instance` ,并且将构造方法设为私有,这样就无法通过 `new` 关键字创建对象。在获取实例的方法中,判断 `instance` 是否为空,如果为空则创建一个新的 `Singleton` 对象,否则直接返回 `instance` 。
2. 饿汉式单例模式(Eager Initialization)
饿汉式单例模式是指在类加载时就创建实例。这种方式的优点是获取实例的速度非常快,但是可能会浪费系统资源,因为实例在整个程序运行期间都存在,即使没有被使用过。
```java
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton() {
}
public static Singleton getInstance() {
return instance;
}
}
```
在饿汉式单例模式中,我们定义了一个私有的静态变量 `instance` ,并且在类加载时就创建了一个新的 `Singleton` 对象。在获取实例的方法中,直接返回 `instance` 。
阅读全文