单例设计模式详解——定义、适用场景和基本应用

一、定义与类型

定义:保证一个类仅有一个实例,并提供一个全局访问点

类型:创建型

二、单例适用场景

》想确保任何情况下都绝对只有一个实例

单服务情况下网站的计数器使用单例

集群的情况下共享的计数器

应用的配置使用单例  线程池的设计

数据库的连接池也使用单例

三、单例的优点

》在内存里只有一实例,减少了内存开销。一个对象需要频繁创建和销毁,无法优化

》可以避免对资源的多重占用。对同一个文件的写操作

》设置全局访问点,严格控制访问。对外无法new对象,只能通过提供的接口提供访问

缺点;

》没有接口,不能扩展

四、单例重点

》私有构造器。

》线程安全。多线程时的应用。

》延迟加载。只有使用时才创建

》序列化和反序列化安全。一旦序列化和反序列化,会破坏单例模式

》反射。防止反射攻击。

五、单例设计方案中的使用的机制

单例实现方案中使用的双重检查锁内存机制

静态内部类的实现方案,基于类的初始化、延迟加载方案

实用技能:

》反编译学习。jad反编译工具的使用

》内存管理。单例实现方案时安全访问机制

》多线程Debug。

六、单例——相关设计模式

》单例模式和工厂模式

》单例模式和享元模式结合。此时享元模式类似于单例模式 的工厂。

 

 

 

 

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值