设计模式在Java中的应用:单例模式实现
在Java中,单例模式是一种创建型设计模式,它保证一个类只有一个实例,并提供全局访问点。
以下是使用Java实现单例模式的步骤:
- 饿汉式:
这种方式在类加载时就完成了初始化,无论是否需要获取实例,都可以达到线程安全的目的。
public class Singleton1 {
private static Singleton1 instance;
private Singleton1() {}
public static Singleton1 getInstance() {
if (instance == null) {
synchronized (Singleton1.class) {
if (instance == null) {
instance = new Singleton1();
}
}
}
return instance;
}
// 用于测试,避免单例模式导致的不便
public void test() {
Singleton1 instance1 = Singleton1.getInstance();
Singleton1 instance2 = Singleton1.getInstance();
System.out.println("instance1: " + instance1);
System.out.println("instance2: " + instance2);
// 如果要创建新的对象,应该使用getInstance方法
// 因为Singleton1实例是在 getInstance 方法被调用时创建的
// 其他任何时候调用 getInstance 方法返回的是同一个实例
}
}
- 懒汉式(在需要获取实例时才初始化):
public class Singleton2 {
private static Singleton2 instance;
private Singleton2() {}
public synchronized static Singleton2 getInstance() {
if (instance == null) {
instance = new Singleton2();
}
return instance;
}
// 用于测试,避免单例模式导致的不便
public void test() {
Singleton2 instance1 = Singleton2.getInstance();
Singleton2 instance2 = Singleton2.getInstance();
System.out.println("instance1: " + instance1);
System.out.println("instance2: " + instance2);
// 如果要创建新的对象,应该使用getInstance方法
// 因为Singleton2实例是在 getInstance 方法被调用时创建的
// 其他任何时候调用 getInstance 方法返回的是同一个实例
}
}
这两种方式都可以保证单例模式在Java中的实现。选择哪种方式主要取决于代码的需求和执行环境。
还没有评论,来说两句吧...