设计模式中单例模式面试题!!!懒汉单例模式和饿汉单例模式

这是设计模式种最常见的面试题

**一、单例模式的概述:**
		单例模式属于创建型模式,要确保类只有一个实例,并且提供一个全局访问点。
**二**特点:
		1、单例类只能有一个实例。  (将构造函数私有化)
		2、单例类必须自己创建自己的唯一实例。  (自己创建自己)
		3、单例类必须给所有其他对象提供这一实例。(对外提供访问接口)
**三**使用场景:
		当系统中只需要一个实例对象或者系统中只允许一个公共访问点。
**四、**懒汉模式(在类加载时不初始化,线程不安全)
	代码如下:
public class LazySingleton {

	//懒汉模式:
	private LazySingleton() {}
	
	private static LazySingleton intgance=null;
	
	public static LazySingleton getintgance() {
		if(intgance==null) {
			Object object = new Object();
			synchronized (object) {
				if(intgance==null) {
					intgance=new LazySingleton();
				}
			}
		}
		return intgance;
	}
测试如下:
public class Test {

	public static void main(String[] args) {
		LazySingleton lazySingleton1=  LazySingleton.getintgance();
		LazySingleton lazySingleton2=  LazySingleton.getintgance();
		if(lazySingleton1==lazySingleton2) {
			System.out.println("比较的地址相同-------");
		}
	}
}

、饿汉模式(在类加载时就完成了初始化,所以类加载较慢,但获取对象的速度快,线程安全)
代码如下:

public class LazySingleton {

	//饿汉模式:
			private LazySingleton() {};
			private static LazySingleton intgance=new LazySingleton();
			
			public static LazySingleton getintgance() {
				return intgance;
			}
	
}
	测试如下:
public class Test {

	public static void main(String[] args) {
		LazySingleton lazySingleton1=  LazySingleton.getintgance();
		LazySingleton lazySingleton2=  LazySingleton.getintgance();
		if(lazySingleton1==lazySingleton2) {
			System.out.println("比较的地址相同-------");
		}
	}
}

你可能感兴趣的:(面试,java,面试)