Java单例模式详解(定义特点及实现方式)

Java单例模式详解(定义特点及实现方式)-mikechen

Java单例模式定义

单例模式是一种创建型设计模式,旨在确保一个类只有一个实例,Java单例模式无非就是单例模式的一种实现方式。

 

Java单例模式特点

单例模式具有以下特点:

1.单一实例

单例模式确保一个类只有一个实例存在,并且提供全局访问点以获取该实例。

2.全局访问

通过单例模式,可以在应用程序的任何地方访问该实例,而不需要通过参数传递或实例化多个对象。

3.节约资源

单例模式的实现方式支持延迟实例化,在需要使用实例时才进行实例化,避免了不必要的资源消耗。

4.高性能

由于单例模式只有一个实例存在,可以避免重复的实例化过程,提高性能和资源利用率。

 

Java单例模式实现

在Java中,有几种常见的实现单例模式的方式:

1.饿汉式

public class Singleton {
    private static final Singleton instance = new Singleton();

    private Singleton() {
        // 私有构造函数,防止外部实例化
    }

    public static Singleton getInstance() {
        return instance;
    }
}

 

2.懒汉式

public class Singleton {
    private static Singleton instance;

    private Singleton() {
        // 私有构造函数,防止外部实例化
    }

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

 

3.静态内部类实现

public class Singleton {
    private Singleton() {
        // 私有构造函数,防止外部实例化
    }

    private static class SingletonHolder {
        private static final Singleton instance = new Singleton();
    }

    public static Singleton getInstance() {
        return SingletonHolder.instance;
    }
}

 

4.枚举类实现

public enum Singleton {
    INSTANCE;

    // 添加其他方法和成员变量

    public void someMethod() {
        // 实现逻辑
    }
}

 

Java单例模式应用

单例模式在许多场景中非常有用,例如:

  • 当一个类的实例需要在整个应用程序中共享和被访问时。
  • 当一个类的实例化过程比较昂贵,但又需要频繁地使用该实例时,可以避免多次实例化,提高性能。
  • 当一个类的实例必须满足特定条件或限制时,例如数据库连接池或线程池。

mikechen

mikechen睿哥,10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获知最新一线技术干货!

评论交流
    说说你的看法