Java设计模式之单例模式

单例模式(Singleton Pattern)是一种常用的设计模式,它用于限制一个类只能创建一个实例,并提供一个全局访问点。在Java中,实现单例模式的关键点包括:

  1. 私有的构造函数:为了防止其他类创建该类的实例,我们需要将构造函数设为私有。

  2. 静态的实例变量:我们需要一个静态的变量来存储该类的唯一实例。

  3. 公共的静态方法:我们需要一个公共的静态方法来获取该类的唯一实例。如果实例还未创建,这个方法需要负责创建实例。

懒汉式单例模式

懒汉式是指在第一次调用获取实例的方法时才创建实例,之所以称为“懒汉式”,是因为它在创建单例实例上“懒”,只有在真正需要使用时才会创建。

public class LazySingleton {
private static LazySingleton instance;
private LazySingleton() {}
public static synchronized LazySingleton getInstance() {
if (instance == null) {
instance = new LazySingleton();
}
return instance;
}
}

在这个例子中,getInstance()方法使用了synchronized关键字来确保线程安全,这意味着在多线程环境中,只有一个线程能够进入这个方法,从而防止创建多个实例。

饿汉式单例模式

饿汉式是指在类加载时就创建实例,之所以称为“饿汉式”,是因为它在创建单例实例上“饿”,在类加载时就创建了单例实例,无论后续是否会使用到。

public class EagerSingleton {
private static EagerSingleton instance = new EagerSingleton();
private EagerSingleton() {}
public static EagerSingleton getInstance() {
return instance;
}
}

在这个例子中,单例实例在类加载时就被创建,因此getInstance()方法不需要使用synchronized关键字来确保线程安全,这可以提高性能。但是,如果单例类的创建过程很耗时或耗资源,且使用的频率不高,那么饿汉式可能会导致资源的浪费。

总结

单例模式是一种非常重要的设计模式,它可以确保一个类只有一个实例,并提供一个全局访问点。在Java中,我们可以通过私有的构造函数、静态的实例变量和公共的静态方法来实现单例模式。懒汉式和饿汉式是实现单例模式的两种常见方式,它们各有优缺点,我们需要根据具体的需求来选择使用哪种方式。

posted @   zzusjw  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示