设计模式之单例模式
基于java代码示例
public class Singleton {
private static Singleton instance;
private Singleton() {
// 私有构造方法,防止外部实例化
}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
在这个示例中,我们定义了一个 Singleton 类,其中包含一个私有的静态实例变量 instance 和一个静态方法 getInstance()。instance 变量用于保存类的唯一实例,而 getInstance() 方法用于获取该实例。
在构造方法中,我们将 instance 设置为 null,以防止外部通过反射创建多个实例。同时,我们使用了一个私有的静态方法 getInstance() 来获取该类的唯一实例。当第一次调用 getInstance() 时,它会创建一个新的 Singleton 实例并将其保存在 instance 变量中,从而保证后续调用 getInstance() 时都能返回同一个实例。
下面是一个客户端代码的示例:
public class Main {
public static void main(String[] args) {
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
System.out.println(s1 == s2); // 输出:true
}
}
在这个示例中,我们定义了一个 Singleton 类和一个客户端类 Main。客户端类通过调用 Singleton.getInstance() 方法来获取该类的唯一实例,并将其保存在 s1 和 s2 变量中。由于 Singleton 类使用了一个私有的静态方法 getInstance() 来获取实例,因此我们可以保证 s1 和 s2 变量保存的是同一个实例。最后,我们输出 s1 == s2 的结果,可以看到它是 true,说明 s1 和 s2 变量保存的是同一个实例。
博客基于Java代码展示设计模式中的单例模式。定义了Singleton类,含私有静态实例变量和静态获取实例方法,构造方法防止反射创建多实例。客户端类调用获取实例方法,验证获取的是同一实例,输出结果为true。
101万+





