java_单例模式之(概念、特点)

本文详细介绍了Java中单例模式的概念及其四种实现方式:饿汉式、懒汉式、内部类式及双重验证。每种方式都附带了示例代码,并分析了各自的优缺点。

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

概念:
  java中单例模式是一种常见的设计模式,单例模式的写法有很多种,比较常见的有三种:懒汉式、饿汉式、内部类、双重验证。
  单例模式有以下特点:
  1、单例类只能有一个实例。
  2、单例类必须自己创建自己的唯一实例。

  3、单例类必须给所有其他对象提供这一实例。

 

单例模式确保该类只被是实例化一次,并且只能自己实例化自己。

若想某一类不在类外被实例化,只需用private修饰符修饰其构造函数。

1.饿汉式:

public class Single {
	private Single single=new Single();
	private Single() {}
	public Single getInstance() {
		return this.single;
	}
}

优点线程安全,缺点占用内存

2.懒汉式

//懒汉式
public class Single01 {
	private static Single01 single;
	private Single01() {}
	public static synchronized Single01 getINstance() {
		if(single==null) {
			single=new Single01();
		}
		return single;
	}
	
}

虽然线程安全但是,效率特别低,当多线程访问时需要排队等待

3.内部类式

public class Single02 {
    private Single02() {}
	public Single02 getInstance() {
		return Inner.getInstance();
	}
	private static class  Inner{
		private static Single02 single=new Single02();
		public static Single02 getInstance() {
			return single;
		}
	}
}

 

4.双重验证


public class Single03 {
	private static Single03 single;
	public Single03 getInstance() {
		if(single==null) {
			synchronized (Single03.class) {
				if(single==null) {
					single=new Single03();
				}
			}
		}
		return single;
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值