单例模式 static flag
时间: 2023-09-17 09:01:57 浏览: 55
单例模式是一种设计模式,它的目的是确保一个类只有一个实例,并提供全局访问该实例的方式。
在单例模式中,使用static标记的flag是一种常见的实现方式。这个flag通常用来标记当前的实例是否已经被创建。
具体实现时,可以在类的静态属性中定义一个私有静态变量flag,并初始化为false。当需要访问单例实例时,先通过一个公共静态方法来检查flag的状态,如果flag为false,则表示实例尚未被创建,可以使用new关键字创建一个新的实例,并将flag设置为true。如果flag为true,则表示实例已经存在,直接返回该实例。
以下是一个简单的示例代码:
```java
public class Singleton {
private static boolean flag = false;
private static Singleton instance;
private Singleton() {
// 私有构造方法,防止外部通过new关键字创建实例
}
public static synchronized Singleton getInstance() {
if (!flag) {
instance = new Singleton();
flag = true;
}
return instance;
}
}
```
以上代码中,使用flag来标记实例是否已经存在,在getInstance方法中首先检查flag的状态,如果为false,则进行实例的创建。在多线程环境下,为了保证线程安全,可以在getInstance方法上加上synchronized关键字,确保只有一个线程能够进入创建实例的逻辑。
通过这种方式,使用static flag可以更加直观地判断实例是否已经存在,避免了重复的实例创建。