一: 什么是单例模式?
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
优点:由于单例模式只生成了一个实例对象,减少了系统的性能开销
二:如何实现单例?
- 将类的构造器私有化
- 在类中创建唯一实例
- 提供一个全局的静态方法获取该实例
三:饿汉式
- 优点:没有synchronized,效率会很高,线程安全
- 缺点:当类加载器加载该类是就会初始化创建该实例,不能懒加载,浪费内存
public class Singleton{
//私有化构造器
private Singleton(){}
//自己持有一个自己的对象
private static Singleton singleton=new Singleton1();
//给一个返回对象的方法
public static Singleton getInstance(){
return singleton;
}
}
四:懒汉式
- 优点:调用getInstance()方法时才会初始化,支持懒加载,减少内存浪费
- 缺点:有synchronized,效率低
public class Singleton{
//私有化构造器
private Singleton(){}
//自己持有一个自己的对象
private static Singleton singleton;
//给一个返回对象的方法
public static synchronized Singleton getInstance(){
if(singleton==null){
singleton=new Singleton();
}
return singleton;
}
}
五:静态内部类(推荐使用)
- 支持懒加载,效率高,线程安全
public class Singleton {
//私有化构造器
private Singleton(){}
//通过静态内部类存放单例的对象
static class Temp{
private static Singleton singleton=new Singleton();
}
//给一个返回对象的方法
public static Singleton getInstance(){
return Temp.singleton;
}
}