手写单例模式
时间: 2023-06-29 21:06:47 浏览: 198
head first设计模式
单例模式是一种创建型设计模式,它保证一个类只有一个实例,并提供一个全局访问点。
以下是一个手写的单例模式示例代码:
```java
public class Singleton {
private static Singleton instance;
private Singleton() {
// 私有构造函数,避免外部实例化
}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
```
在这个示例中,我们将构造函数设为私有,避免外部通过 `new` 操作符来实例化该类。同时,我们定义了一个静态方法 `getInstance()` 来获取该类的唯一实例。在该方法中,我们通过判断实例是否已经存在来决定是创建新实例还是直接返回现有实例。
需要注意的是,这个示例并没有考虑多线程环境下的并发访问问题。如果在多线程环境下,可能会出现两个线程同时进入 `if (instance == null)` 条件分支,从而导致创建多个实例的问题。为了解决这个问题,我们可以对 `getInstance()` 方法加上 `synchronized` 关键字,使得在同一时刻只有一个线程能够进入该方法。但是,这种方式会影响性能,因此也可以考虑使用双重检查锁定或静态内部类等方式来实现线程安全的单例模式。
阅读全文