单例模式

简介:

单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

应用场景:

1、Windows 是多进程多线程的,在操作一个文件的时候,就不可避免地出现多个进程或线程同时操作一个文件的现象,所以所有文件的处理必须通过唯一的实例来进行。

2、一些设备管理器常常设计为单例模式,比如一个电脑有两台打印机,在输出的时候就要处理不能两台打印机打印同一个文件。

设计原则:

  1. 单例类只能有一个实例。
  2. 单例类必须自己创建自己的唯一实例,创建方法必须为static private方法。
  3. 单例类必须给所有其他对象提供这一实例,提供方法为static。

注意事项:

  1. 保证创建的实例为单一化实例——需要保证线程安全
  2. 保证lazy初始化(延迟加载)——防止在虚拟机加载类时初始化,将初始化时间延迟到调用getInstance。

几种实例 :

1.饿汉式:

 

  • 是否lazy初始化:否
  • 是否线程安全:是 

2. 懒汉式

  • 是否lazy初始化:是
  • 是否线程安全:否 

3.懒汉式(线程安全版本)

4.双重加锁式(Synchroized + volatile)

  • 是否lazy初始化:是
  • 是否线程安全:是

5.静态内部类式(利用初始化锁)

  • 是否lazy初始化:是
  • 是否线程安全:是 

6.枚举式 

  • 是否lazy初始化:是
  • 是否线程安全:是 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值