单例模式

本文深入解析单例模式的实现原理,包括饿汉式与懒汉式的特性与应用场景,通过实例展示如何确保一个类只有一个实例,并提供全局访问点。

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

单例模式:一个类有且只有一个实例。即一个类不论创建多少个对象,每个对象指向的内存地址一致。

一、实现步骤

  1. 构造器私有化,控制外部不允许直接创建对象。
  2. 创建一个静态的私有的该类的引用,存储创建的唯一对象
  3. 创建公共的静态的访问方式

二、实现方式

(一)、饿汉式:在类第一次加载完成后就创建对象

  1.特点:线程安全,但效率低,容易产生垃圾对象
  2.实现:
例:在计算机中打开“我的电脑”,不管打开几次都只是打开了同一个“我的电脑”。
public class MyComputer{
	//1.构造器私有化
	private MyComputer(){ }
	//2.创建一个静态的私有的该类的引用
	private static MyComputer mc = new MyComputer();
	//3.创建公共的静态的访问方式
	public static MyComputer Interview(){
		return mc;
	}
}
public class Test {
	public static void main(String[] args) {
		MyComputer mc1=MyComputer.Interview();
		MyComputer mc2=MyComputer.Interview();
		MyComputer mc3=MyComputer.Interview();
		System.out.println(mc1);
		System.out.println(mc2);
		System.out.println(mc3);//mc1,mc2,mc3全部指向内存中的一个地址
	}
}

(一)、懒汉式:在第一次调用功能时才创建对象

  1.特点:线程不安全,但效率高
  2.实现:
例:在计算机中打开“我的电脑”,不管打开几次都只是打开了同一个“我的电脑”。
public class MyComputer{
	//1.构造器私有化
	private MyComputer(){ }
	//2.创建一个静态的私有的该类的引用
	private static MyComputer mc = null;
	//3.创建公共的静态的访问方式
	public static MyComputer Interview(){
		if (mc == null){
			mc = new MyComputer;
		}
		return mc;
	}
}
public class Test {
	public static void main(String[] args) {
		MyComputer mc1=MyComputer.Interview();
		MyComputer mc2=MyComputer.Interview();
		MyComputer mc3=MyComputer.Interview();
		System.out.println(mc1);
		System.out.println(mc2);
		System.out.println(mc3);//mc1,mc2,mc3全部指向内存中的一个地址
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值