Java:设计模式之 单例模式

单例模式

保证一个类只有一个实例,并且提供一个访问该实例的全局访问点。

单例设计模式主要关心的几个点:

1.延迟加载

2.线程安全

3.效率

特点

  1. 该类在全局只有一个实例。

  2. 只提供一个访问该实例的全局访问点。

应用场景

  1. Windows 的任务管理器 就是最典型的单例模式
  2. Windows 的回收站也是典型的单例应用
  3. 项目中,读取配置文件的类,一般也只有一个对象,没必要每次使用配置文件数据,每次new一个对象去读取
  4. 网站的计数器,一般也是采用单例模式实现,否则难以同步
  5. 应用程序的日志应用,由于共享的日志文件一直处于打开状态,因为只能有一个实例去操作,否则内容不好追加
  6. 数据库连接池的设计一般也是采用单例设计模式,因为数据库连接是一种数据库资源
  7. 操作系统的文件系统,也是大的单例设计模式实现的具体例子,一个操作系统只能有一个文件系统
  8. Servlet编程中的 Application 、Servlet 也是单例的典型应用
  9. Spring MVC/struts1 框架中,控制器对象也是单例

单例模式的优点

​ 由于单例模式只生成一个实例,减少了系统性能开销,当一个对象的产生需要比较多的资源时,如读取配置、产生其他依赖对象时,则可以通过在应用启动时直接产生一个单例对象,然后永久驻留内存的方式来解决

​ 单例模式可以在系统设置全局的访问点,优化共享资源访问,例如可以设计一个单例类,负责所有数据表的映射处理

常见的五种单例模式实现方式

饿汉式(线程安全,调用效率高,但是不能延时加载)

懒汉式(线程安全,调用效率不高,但是可以延时加载)

双重检测锁式(由于JVM地层内部模型原因,偶尔会出问题。不建议使用)

静态内部类式(线程安全,调用效率高,也可以延时加载)

枚举单例(线程安全,调用效率高,不能延时加载)

饿汉式

饿汉式实现的一般步骤:

  1. 构造方法私有
  2. 类的内部创建私有对象
  3. 提供对外的访问方法

代码实现

public class Demo01 {
   
	public static void main(String[] args) {
   
		EagerSingleton instance = EagerSingleton.getInstance();
		EagerSingleton instance2 = EagerSingleton.getInstance();
		System.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值