第9章 单例模式

单例模式是一种设计模式,确保一个类只有一个实例并提供全局访问点。它通过私有构造函数防止外部实例化,采用静态工厂方法如饿汉式、懒汉式来控制实例创建。在多线程环境下,可能需要使用双重检查锁定或静态内部类来实现线程安全的单例。单例模式常用于资源管理,如任务管理器,但要注意避免滥用导致的拓展困难和违反单一职责原则。
摘要由CSDN通过智能技术生成

第9章 单例模式

单例模式确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

1.模式动机

Windows任务管理器,确保唯一性,没有其他实例被创建,并且提供访问该实例的方法。

2.要点

  • 必须自行创建这个实例->单例类的构造函数为私有
  • 这个类只能有一个实例->提供一个自身的静态私有成员变量
  • 必须自行向系统提供这个实例->提供一个公有的静态工厂方法
  • 饿汉式、懒汉式

饿汉式

先new了再说

EagerSingleton = new EagerSingleton()

懒汉式

不调用getInstance()就不new

LazySingleton = null

  • 多线程、分布式:延时加载、二次锁定(synchronized)、静态内部类(IoDH)

3.一个角色

单例角色( Singleton):

  1. 在内部实现只生成一个实例,提供一个静态的getInstance()工厂方法
  2. 为了防止在外部对其实例化,将其构造函数设计为私有
  3. 在单例类内部定义一个 Singleton类型的静态对象,作为外部共享的唯一实例

4.适用环境

  • 系列只需要一个实例对象
  • 客户调用类的单个实例只允许使用一个公共访问点

5.注意问题

  • 不使用单例模式存取全局变量
  • 不要将数据库连接做成单例

6.优点

  • 提供了对唯一实例的受控访问
  • 节约资源,提高性能
  • 允许可变数目的实例

7.缺点

  • 拓展困难
  • 违背“单一职责原则”
  • 滥用单例会出现负面问题

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值