天天看点

设计模式——单列设计模式

package com.java.day5;
/**
 * 模式:模式就是解决一类问题的固定步骤
 * 单列设计模式:保证一个类在你内存中只有一个对象
 * 模板设计模式
 * 装饰者设计模式
 * 观察者设计模式
 * 工厂设计模式
 * 
 * 饿汉单列设计模式:
 * 1.私有化构造函数
 * 2.声明本类的引用类型变量,并且使用该变量指向本类方法
 * 3.提供一个公共静态方法获取本类的对象
 *
 *懒汉单例设计模式
 *1.私有化构造方法
 *2.声明本类的引用类型变量但不要创建对象
 *3.提供一个公共静态方法获取本类的对象获取之前先判断是否已经创建了本类对象
 *如果已经创建了那么直接返回对象,如果还没有创建那么先创建本类的对象 
 *推荐使用:
 *饿汉单列设计模式 因为懒汉单列设计模式会存在线程安全问题,目前还不能保证一个类只有对象
 *
 */
public class Day2{
//	//1.私有化构造函数
//	private Day2(){
//		
//	}
//	//2.声明本类的引用类型变量,并且使用该变量指向本类方法
//	private static Day2 s=new Day2();
//	
//	//提供一个公共静态方法获取本类的对象
//	public static Day2 getInt(){
//		return s;
//	}
	/**
	 * 懒汉单列设计模式——保证在内存中只有一个对象
	 * 
	 */
	//私有化构造方法
	private Day2(){}
	//声明本类引用类型变量,不创建本类对象
	private static Day2 s;
	//
	public static Day2 getInt(){
		if(s==null){
			s=new Day2();
		}
		return s;
	}
	public static void main(String[] args) {
//		Day2 s1=new Day2();
//		Day2 s2=new Day2();
		Day2 s1=Day2.getInt();
		Day2 s2=Day2.getInt();
		System.out.println("是同一个对象吗?"+(s1==s2));
	}
}