什么是Java的单例模式?有几种?(附代码说明)

一、单例模式是什么

在 Java 中,单例模式是一种设计模式,用于确保某个类在应用程序中只能创建一个实例,并提供一个全局访问点来访问该实例。单例模式通常用于管理共享资源、配置对象、数据库连接池等场景,以确保系统中某些对象的唯一性和一致性。

二、有哪些单例模式

在 Java 中,实现单例模式的方法有以下几种:

2.1 饿汉式

饿汉式(Eager Initialization):在类加载时就创建实例,保证了线程安全,但可能会导致资源浪费,因为无论是否使用都会创建实例。

public class Singleton {
    private static final Singleton INSTANCE = new Singleton();
    
    private Singleton() {}
    
    public static Singleton getInstance() {
        return INSTANCE;
    }
}

2.2 懒汉式

懒汉式(Lazy Initialization):在第一次使用时才创建实例,节省了资源,但需要考虑线程安全问题。常见的方法有双重检查锁和静态内部类。

  • 双重检查锁(Double-Checked Locking)
public class Singleton {
    private static volatile Singleton instance;
    
    private Singleton() {}
    
    public static Singleton getInstance() {
        if (instance == null) {
            synchronized (Singleton.class) {
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }
}
  • 静态内部类(Static Nested Class)
public class Singleton {
    private Singleton() {}
    
    private static class SingletonHolder {
        private static final Singleton INSTANCE = new Singleton();
    }
    
    public static Singleton getInstance() {
        return SingletonHolder.INSTANCE;
    }
}

2.3 枚举单例

枚举单例:利用枚举类型的特性保证实例的唯一性。枚举类的实例在 JVM 中是唯一的,且线程安全。

public enum Singleton {
    INSTANCE;
    
    // 可以添加其他方法和属性
}
  • 15
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Java有23种设计模式,它们分别是:工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式、适配器模式、桥接模式、组合模式、装饰器模式、外观模式、享元模式、代理模式、职责链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板模式和访问者模式。 ### 回答2: Java有23种常见的设计模式,它们被分为三个不同的分类:创建型模式、结构型模式和行为型模式。 1. 创建型模式:这些模式关注对象的创建处理,包括了如何构建对象和管理对象的创建的方式。常见的创建型模式有: - 工厂模式(Factory Pattern) - 抽象工厂模式(Abstract Factory Pattern) - 建造者模式(Builder Pattern) - 原型模式(Prototype Pattern) - 单例模式(Singleton Pattern) 2. 结构型模式:这些模式关注对象之间的组合和关联方式,以形成更大的结构。常见的结构型模式有: - 适配器模式(Adapter Pattern) - 桥接模式(Bridge Pattern) - 装饰器模式(Decorator Pattern) - 组合模式(Composite Pattern) - 外观模式(Facade Pattern) - 享元模式(Flyweight Pattern) - 代理模式(Proxy Pattern) 3. 行为型模式:这些模式关注对象之间的通信和交互方式,以及对象的责任分配和算法的调度。常见的行为型模式有: - 观察者模式(Observer Pattern) - 策略模式(Strategy Pattern) - 命令模式(Command Pattern) - 模板方法模式(Template Method Pattern) - 状态模式(State Pattern) - 责任链模式(Chain of Responsibility Pattern) - 中介者模式(Mediator Pattern) - 访问者模式(Visitor Pattern) - 解释器模式(Interpreter Pattern) - 迭代器模式(Iterator Pattern) - 备忘录模式(Memento Pattern) 这些设计模式有助于解决不同类型的问题,并提供了一种通用的方式来创建可重用的代码。开发者可以根据具体的需求选择适当的设计模式来优化他们的代码。 ### 回答3: Java中有23种经典的设计模式,它们分别是: 1. 简单工厂模式(Simple Factory Pattern) 2. 工厂方法模式(Factory Method Pattern) 3. 抽象工厂模式(Abstract Factory Pattern) 4. 单例模式(Singleton Pattern) 5. 建造者模式(Builder Pattern) 6. 原型模式(Prototype Pattern) 7. 适配器模式(Adapter Pattern) 8. 桥接模式(Bridge Pattern) 9. 组合模式(Composite Pattern) 10. 装饰器模式(Decorator Pattern) 11. 外观模式(Facade Pattern) 12. 享元模式(Flyweight Pattern) 13. 代理模式(Proxy Pattern) 14. 责任链模式(Chain of Responsibility Pattern) 15. 命令模式(Command Pattern) 16. 观察者模式(Observer Pattern) 17. 中介者模式(Mediator Pattern) 18. 备忘录模式(Memento Pattern) 19. 迭代器模式(Iterator Pattern) 20. 状态模式(State Pattern) 21. 策略模式(Strategy Pattern) 22. 模板方法模式(Template Method Pattern) 23. 访问者模式(Visitor Pattern) 这些设计模式可以帮助开发者解决不同的问题,提供代码的可重用性、可扩展性和可维护性。每种设计模式都有不同的应用场景和解决方案,开发者可以根据实际需求选择合适的设计模式来编写代码。这些设计模式在实际的Java开发中被广泛应用,并且对于理解和应用面向对象的设计原则和思想也具有重要意义。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值