设计模式——单列模式
程序员文章站
2022-03-10 17:31:25
单列模式是设计模式中使用最为普遍的模式之一,它是一种对象创建模式,用于产生一个对象的实例,它可以确保一个类只产生一个实例。 单例模式的两大好处: 1.对于频繁使用的对象,可以省略创建对象花费的时间。 2.因为new减少,所以对内存使用频率降低,可以减少gc压力,缩短jc停顿时间。 单例类实现方式:使 ......
单列模式是设计模式中使用最为普遍的模式之一,它是一种对象创建模式,用于产生一个对象的实例,它可以确保一个类只产生一个实例。
单例模式的两大好处:
1.对于频繁使用的对象,可以省略创建对象花费的时间。
2.因为new减少,所以对内存使用频率降低,可以减少gc压力,缩短jc停顿时间。
单例角色 角色 作用 单例类 提供单例工厂,返回单例 使用者 获取并使用单例单例类实现方式:使用内部类的方式实现单例,既可以做到延迟加载,又不必使用同步关键字,是一种比较完善的方式。
1 public class Singleton{ 2 private Singleton(){} 3 private static class SingletonHolder{ 4 private static Singleton instance = new Singleton(); 5 } 6 7 public static Singleton getInstance(){ 8 return SingletonHolder.instance; 9 } 10 11 12 }
注意:序列化和反序列可能会破坏单例,一般来说,对单列进行序列化和反序列化的场景并不多见,但如果存在就需要注意。
package com.design.singleton; import java.io.Serializable; public class SerSingleton implements Serializable { private static final long serialVersionUID = 1L; private SerSingleton(){} private static class SerSingletonHolder{ private static SerSingleton serSingleton = new SerSingleton(); } public static SerSingleton getInstance(){ return SerSingletonHolder.serSingleton; } /** * 阻止生成新的实例,总是返回当前实例 * @return */ private Object readResolve(){ return SerSingletonHolder.serSingleton; } }
上一篇: c++结构体与指针和函数解析