单例模式的介绍
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
单例模式是一种创建型设计模式,它确保一个类只有一个实例,并提供了一个全局访问点来访问该实例。
需要注意的点:
每个单例类只能有一个实例
单例类必须自己创建自己的唯一实例
单例类必须给所有的其他对象提供这一实例
单例类的构造方法必须私有
单例模式的实现
单例模式有很多实现方法,主要为懒汉式和饿汉式,饿汉式为线程安全的。懒汉式不安全,以下仅仅介绍这两种方式的线程安全的实现方式
懒汉式
采用双重检查锁+volatile 的形式,不仅保证了线程安全的前提下也提高了性能
public class Singleton {private volatile static Singleton singleton;private Singleton (){}public static Singleton getInstance(){if(singleton==null){synchronized (Singleton.class){if(singleton==null){singleton=new Singleton();}}}return singleton;} }
饿汉式
这种单例实现方式被称为“饿汉式”,因为它在类加载时就立即创建了实例。这种方式简单且线程安全,但在某些情况下可能会导致资源的浪费,因为实例在创建后可能不会被使用。
public class Singleton1 {//创建 Singleton1 的一个对象private static Singleton1 singleton1 = new Singleton1();//让构造函数为 private,这样该类就不会被实例化private Singleton1(){}//获取唯一可用的对象public static Singleton1 getSingleton1(){return singleton1;} }