单例模式

  • 单例模式
    单例模式(Singleton Pattern)是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点。
    隐藏其所有的构造方法。属于创建型模式。

  • 适用场景
    确保任何情况下都绝对只有一个实例。 例如:ServletContext、ServletConfig、ApplicationContext DBPool

  • 常见写法
    1、饿汉式单例 2、懒汉式单例 3、注册式单例 4、ThreadLocal单例
    饿汉式单例 在单例类首次加载时就创建实例 缺点:浪费内存空间
    懒汉式单例 被外部类调用时才创建实例
    注册式单例 将每一个实例都缓存到统一的容器中,使用唯一标识获取实例
    ThreadLocal单例 保证线程内部的全局唯一,且天生线程安全

  • 优点
    在内存中只有一个实例,减少了内存开销。
    可以避免对资源的多重占用。
    设置全局访问点,严格控制访问。

  • 缺点
    没有接口,扩展困难。
    如果要扩展单例对象,只有修改代码,没有其他途径。

  • 注意的点:
    1、私有化构造器 2、保证线程安全 3、延迟加载 4、防止序列化和反序列化破坏单例 5、防御反射攻击单例

posted @ 2019-10-28 22:16  CodeLee0106  阅读(53)  评论(0)    收藏  举报