面试题汇总--单例模式

本文详细介绍了Java中的单例模式,包括懒汉式、饿汉式和登记式单例,阐述了单例模式的特点、优点和缺点,并讨论了适用场景及如何保证对象的唯一性。单例模式常用于确保在系统中只有一个对象实例,以节约资源并提高效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

单例模式

Java中单例模式是一种常见的设计模式。

单例模式分三种:懒汉式单例,饿汉式单例,登记式单例。

单例模式的特点:

  • 单例类只能有一个实例
  • 单例类必须自行创建这个实例
  • 单例类必须自行向整个系统提供这个实例

单例模式举例:(懒汉式)

public class Person { 

    private static Person person =null;

    private Person(){
   
    } 

    public static Person getPerson() { 

        if(person==null){

             synchronized(Person.class){ 

                if(person==null)

                person=new Person();

             } 
        }

        return person;

   } 

} 

单例模式的缺点:

不适用于变化的对象,如果同一类型的对象总是要在不同的用例场景发生变化,单例就会引起数据的错误,不能保存彼此的状态。

单例模式存在的意义:

单例模式让多线程处于等待的状态,一个一个的去解决,节约内存,提高了运行成本

单例模式应用情况:

对于多个对象使用同一个配置信息时,就需要保证该对象的唯一性。

 

如何保证对象的唯一性?

  • 不允许其他程序用new创建该类对象。
  • 在该类创建一个本类实例
  • 对外提供一个方法让其他程序可以获取该对象

实现的方法:

  • 构造函数私有化
  • 类定义中含有一个该类的静态私有对象
  • 该类提供了一个静态的公共的函数用于创建或获取它本身的静态私有对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值