软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。
汇总目录链接:【玩转23种Java设计模式】学习目录汇总整理
某个类只能生成一个实例,该类提供了一个全局访问点供外部获取该实例,其拓展是有限多例模式。 单例模式是大厂热门的面试考点!
懒汉式,线程不安全。
public class LazySingleton {
private static LazySingleton instance;
// 私有的构造方法
private LazySingleton() {
}
public static LazySingleton getInstance() {
// 被动创建,在真正需要使用时才去创建
if (instance == null) {
instance = new LazySingleton();
}
return instance;
}
}饿汉式,线程安全
public class HungrySingleton {
private static HungrySingleton instance = new HungrySingleton();
// 私有的构造方法
private HungrySingleton() {
}
public static HungrySingleton getInstance() {
return instance;
}
}(大厂面试热点)线程安全,延迟初始化。这种方式采用双锁机制,安全且在多线程情况下能保持高性能。
public class Singleton {
private volatile static Singleton singleton;
private Singleton() {
}
public static Singleton getSingleton() {
if (singleton == null) {
synchronized (Singleton.class) {
if (singleton == null) {
singleton = new Singleton();
}
}
}
return singleton;
}
}双重检查模式,进行了两次的判断: