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

概念:
  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;
	}
}

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值