单例模式
-
单例模式
单例模式(Singleton Pattern)是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点。
隐藏其所有的构造方法。属于创建型模式。 -
适用场景
确保任何情况下都绝对只有一个实例。 例如:ServletContext、ServletConfig、ApplicationContext DBPool -
常见写法
1、饿汉式单例 2、懒汉式单例 3、注册式单例 4、ThreadLocal单例
饿汉式单例 在单例类首次加载时就创建实例 缺点:浪费内存空间
懒汉式单例 被外部类调用时才创建实例
注册式单例 将每一个实例都缓存到统一的容器中,使用唯一标识获取实例
ThreadLocal单例 保证线程内部的全局唯一,且天生线程安全 -
优点
在内存中只有一个实例,减少了内存开销。
可以避免对资源的多重占用。
设置全局访问点,严格控制访问。 -
缺点
没有接口,扩展困难。
如果要扩展单例对象,只有修改代码,没有其他途径。 -
注意的点:
1、私有化构造器 2、保证线程安全 3、延迟加载 4、防止序列化和反序列化破坏单例 5、防御反射攻击单例
所谓天才,只不过是把别人喝咖啡的功夫都用在工作上了。

浙公网安备 33010602011771号