java设计模式:单例设计模式

public class Main  {
	/**
	 * 单例设计模式 保证类在内存中只有一个对象
	 * @param args
	 */
	public static void main(String[] args) {
		/**
		 * 成员变量被私有,不能通过类名.调用
		 */
		//Singleton s1 = Singleton.s;
		//Singleton.s = null;
		//Singleton s2 = Singleton.s;
		//System.out.println(s1 == s2);//false
		
		Singleton s1 = Singleton.getS();
		Singleton s2 = Singleton.getS();//无法修改S的值
		System.out.println(s1 == s2);
		
	}
}
/**
 * 饿汉式:
 * 空间换时间
 * 多线程访问不会创建多个对象
 * 
 * @author admin
 *
 */
class Singleton {
	//1私有构造方法,其他类不能访问该构造方法
	private Singleton(){
		
	}
	//2创建本类对象
	private static Singleton s = new Singleton();
	//3对外提供公共的访问方法
	public static Singleton getS() {
		return s;
	}
	
}
/**
 * 懒汉式(开发不用),多线程访问出现安全隐患
 * 时间换空间
 * 多线程访问可能创建多个对象
 * @author admin
 *
 */
class Singleton2 {
		//1私有构造方法,其他类不能访问该构造方法
		private Singleton2(){
			
		}
		//2声明一个引用
		private static Singleton2 s;
		//3对外提供公共的访问方法
		public static Singleton2 getS() {
			if(s == null) {
				s = new Singleton2();
			}
			return s;
		}		
}
/**
 * 第三种
 * @author admin
 *
 */
class Singleton3 {
			//1私有构造方法,其他类不能访问该构造方法
			private Singleton3(){
				
			}
			//2声明一个引用,用final修饰
			public static final Singleton3 s = new Singleton3();
}

猜你喜欢

转载自blog.csdn.net/Pastthewind/article/details/80278288