用Java语言写个单例设计模式的案例
以下是一个使用Java语言实现的单例设计模式的案例:
public class Singleton {
private static Singleton instance;
// 私有构造函数,防止外部实例化对象
private Singleton() {}
// 获取单例对象的方法
public static Singleton getInstance() {
if (instance == null) {
// 在多线程环境下,可能会有多个线程同时进入到这里
// 因此需要使用 synchronized 关键字进行同步
synchronized(Singleton.class) {
// 双重检查,确保只有第一个线程创建了实例对象
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
// 其他业务方法
public void doSomething() {
System.out.println("Singleton instance is doing something.");
}
}
在上述案例中,Singleton类的构造函数被声明为私有,以防止外部代码直接通过new Singleton()来实例化对象。通过getInstance()方法获取Singleton类的单例对象。
在getInstance()方法中,使用了双重检查的方式来确保只有第一个线程创建了实例对象。在多线程环境下,多个线程可能同时通过第一个if语句的判断,因此需要使用synchronized关键字来保证只有一个线程进入临界区创建实例对象。这样可以避免多个线程创建多个实例对象的问题。
使用示例:
public class Main {
public static void main(String[] args) {
// 获取单例对象
Singleton singleton = Singleton.getInstance();
// 调用业务方法
singleton.doSomething();
}
}
输出结果:
Singleton instance is doing something.
``
原文地址: http://www.cveoy.top/t/topic/hKIS 著作权归作者所有。请勿转载和采集!