EffectiveJava[3]:用私有构造器或者枚举类型强化Singleton属性

用私有构造器或者枚举类型强化Singleton属性

是什么:

仅仅被实例化一次的类。通常被用来代表一个无状态的对象,如函数或本质上唯一的系统组件。就是单例模式啦。Singleton模式被广泛用于那些需要频繁实例化但又只需要一个实例的类,如配置信息的读取、线程池的创建、数据库的连接等。

强化Singleton属性的好处主要体现在以下几个方面:

节省内存资源:由于整个应用程序中只存在一个实例,因此无需为每个需要该类的部分都创建新的实例,从而节省了内存资源。
保证数据内容一致性:只有一个实例,避免了因多个实例可能导致的数据不一致问题。
简化管理:由于只有一个实例,管理和维护变得更加简单。
全局访问点:通过提供全局访问点,可以方便地访问和操作该类的唯一实例。

怎么强化:

1-公有静态成员是个final域:私有构造器只被调用一次,用来实例化公有的静态final域。由于缺少公有的或者受保护的构造器,保证了全局唯一性。

2-公有的成员是个静态工厂方法:对于静态方法的所有调用,都会返回同一个对象引用,所以永远不会创建其他的实例。(公有的静态域是final的)。本方法的优势,提供灵活性、可以拓展为泛型singleton工厂、通过方法引用作为提供者(这个没很理解)

3-声明一个包含单个元素的枚举类型(最佳),但不适用于拓展超类的情况。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值