现在的位置: 首页 > 面试题 > 设计模式面试题 > 正文

什么是单例模式?

2022年01月03日 设计模式面试题 ⁄ 共 914字 ⁄ 字号 暂无评论
博客主机

答:单例模式是一种常用的软件设计模式,在应用这个模式时,单例对象的类必须保证只有一个实例存在,整个系统只能使用一个对象实例。

 

优点:不会频繁地创建和销毁对象,浪费系统资源。

 

使用场景:IO 、数据库连接、Redis 连接等。

 

单例模式代码实现:

 

class Singleton {

private static Singleton instance = new Singleton();

public static Singleton getInstance() {

return instance;

}

}

 

单例模式调用代码:

 

public class Lesson7\_3 {

public static void main(String[] args) {

Singleton singleton1 = Singleton.getInstance();

Singleton singleton2 = Singleton.getInstance();

System.out.println(singleton1 == singleton2);

}

}

 

程序的输出结果:true

 

可以看出以上单例模式是在类加载的时候就创建了,这样会影响程序的启动速度,那如何实现单例模式的延迟加载?在使用时再创建?

 

单例延迟加载代码:

 

// 单例模式-延迟加载版

class SingletonLazy {

private static SingletonLazy instance;

public static SingletonLazy getInstance() {

if (instance == null) {

instance = new SingletonLazy();

}

return instance;

}

}

 

以上为非线程安全的,单例模式如何支持多线程?

 

使用 synchronized 来保证,单例模式的线程安全代码:

 

class SingletonLazy {

private static SingletonLazy instance;

public static synchronized SingletonLazy getInstance() {

if (instance == null) {

instance = new SingletonLazy();

}

return instance;

}

}

Wopus问答

Wopus问答

给我留言

留言无头像?


×