Java实现剑指Offer面试题1-单例模式

package chap2.test2;

//设计一个类,只能生成该类的一个实例
public class SingletonTest {
	//使用同步锁的方式创建
	private SingletonTest() {
	}

	private static SingletonTest instence;

	public static SingletonTest getInstence() {
		if (instence == null) {
			synchronized (SingletonTest.class) {
				if (instence == null) {
					instence = new SingletonTest();
				}
			}
		}
		return instence;
	}

	public static void main(String[] args) {
		SingletonTest3 s2 = SingletonTest3.getInstence();
		SingletonTest3 s3 = SingletonTest3.getInstence();
		System.out.println(s2 == s3);
	}
}

//使用静态方法块
//优于第一种方式:静态方法块只调用一次,不用那么多次比较
class SingletonTest2 {
	private SingletonTest2() {
	}
	
	private static SingletonTest2 instence = null;
	static {
		instence = new SingletonTest2();
	}
	public static SingletonTest2 getInstence(){
		return instence;
	}
}

//利用私有静态嵌套类
//优于第二种方法:只在获取的时候调用一次,不用就不调,第二种方法只要用类就生成
class SingletonTest3{
	private SingletonTest3(){}
	public static SingletonTest3 getInstence(){
		return Nested.instence;
	}
	
	private static class Nested{
		public static  SingletonTest3 instence = new SingletonTest3();
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值