java中单例模式的实现

/**
  饿汉实现:
	  类加载时创建对象
	 缺点: 无论对象是否需要都先把对象创建好,浪费堆空间
*/
class ClassA{
	private static final ClassA instance = new ClassA();
	public static ClassA newInstance(){
		return instance;
	}
	/*
	 构造方法必须私有
	*/
	private ClassA(){
	}
}
/**
   懒汉式实现
	  在需要对象的时候,才会创建对象。
	  缺点:并发效率低  在多线程的情况下,
			创建一半时,cpu跳转到另一个线程,
			因此要想实现单例必须加锁
*/
class ClassB{
	
	private static ClassB instance=null;
	public static synchronized ClassB newInstance(){
		if(instance == null){
			instance = new ClassB();
			return instance;
		}
	}
	/*
	 构造方法必须私有
	*/
	private ClassB(){
		
	}
	
}
/**
	融合两种缺点
*/
class ClassC{
	/*
		内部类和外部类加载时是两个独立的.class文件
	*/
	private static class Holder{
		static ClassC instance = new ClassC();
	}
	private static ClassC newInstance(){
		return Holder.instance;
	}
	/*
	 构造方法必须私有
	*/
	private ClassC(){
		
	}

}

发布了10 篇原创文章 · 获赞 0 · 访问量 115

猜你喜欢

转载自blog.csdn.net/weixin_45522160/article/details/104642362
今日推荐