单例模式就是在系统种只存在一个实例。单例模式有两种经典实现,“懒汉模式”、“饿汉模式”,两个模式种饿汉模式是线程安全的,因为它采取的方式是系统启动时初始化,只会创建一次,所以能保证单例。懒汉模式是在需要使用的时候加载,但是在多线程情况下不能保证单例,当然如果用synchronized也能保证单例。
单例模式的优点:
1, 在内存种只存在一个对象,节省空间
2, 避免频繁的创建和销毁对象,提高性能
3, 避免共享资源的多重占用,简化访问
4, 为系统提供一个全局的访问点。
使用场景:
使用招行小程序在招行授权登录时,需要使用招行的安全校验类,需要加载招行安全证书。在这里我采用了饿汉模式,在系统启动时直接创建一个单例类同时初始化加载证书。
class CmbSecurity { private static Security security; static { try { security = new Security(PropertyRepository.CMB_PUBLIC_KEY_PATH); } catch (Exception e) { log.info("获取招行登录解密公钥错误,公钥地址:{}", PropertyRepository.CMB_PUBLIC_KEY_PATH); } } public static Security getSecurity() { return security; } }
原文:https://www.cnblogs.com/tjpblog/p/13162835.html