设计模式——单例模式(饿汉模式)_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 设计模式——单例模式(饿汉模式)

设计模式——单例模式(饿汉模式)

 2015/5/4 4:06:13  陌陌天使  程序员俱乐部  我要评论(0)
  • 摘要:下面接着讲懒汉模式的实现方法http://794950040.iteye.com/blog/2208102以上面的饿汉模式实现为基础实例化一个新的类Singleton2.javapackagecom.elf.SimpleMode;/**懒汉模式*/publicclassSingleton2{}然后三步走:1.将构造方法方法改为私有的2.申明类的唯一实例,用privatestatic修饰,但是不实例化3.在getInstance()方法中实例化该唯一对象得到的类为:packagecom.elf
  • 标签:模式 设计 设计模式 单例模式

class="MsoNormal">下面接着讲懒汉模式的实现方法

?http://794950040.iteye.com/blog/2208102

以上面的饿汉模式实现为基础

实例化一个新的类Singleton2.java

package com.elf.SimpleMode;
/*
 * 懒汉模式
 */
public class Singleton2 {
}

?然后三步走:

?1 .将构造方法方法改为私有的

?2 .申明类的唯一实例,用private?static修饰,但是不实例化

?3 .在getInstance()方法中实例化该唯一对象

得到的类为:

package com.elf.SimpleMode;
/*
 * 懒汉模式
 */
public class Singleton2 {
	//1.将构造方式私有化,不允许外边直接创建对象
	private Singleton2(){
	}
	//2.声明类的唯一实例,使用private static修饰
	private static Singleton2 instance;
	
	//3.提供一个用于获取实例的方法,使用public static修饰
	public static Singleton2 getInstance(){
		if(instance==null){
			instance=new Singleton2();
		}
		return instance;
	}
}

?Test.java中判断得到的实例是否唯一

package com.elf.SimpleMode;

public class Test {
	public static void main(String[] args) {
		//饿汉模式
		Singleton s1=Singleton.getInstance();
		Singleton s2=Singleton.getInstance();
		if(s1==s2){
			System.out.println("s1和s2是同一个实例");
		}else{
			System.out.println("s1和s2不是同一个实例");
		}
		
		//懒汉模式
		Singleton2 s3=Singleton2.getInstance();
		Singleton2 s4=Singleton2.getInstance();
		if(s3==s4){
			System.out.println("s3和s4是同一个实例");
		}else{
			System.out.println("S3和s4不是同一个实例");
		}
		
	}
}

?得到结果:

s1和s2是同一个实例
s3和s4是同一个实例

? ?以上是饿汉模式的实现方法

?

亲可能感到迷惑,看了这么久,这懒汉模式和饿汉模式不是差不多嘛!!

?

懒汉模式的饿汉模式的区别:

? ? ? 饿汉模式的特点是加载类时比较慢,但运行时获取对象的速度比较快,线程安全

? ? ? 懒汉模式的特点是加载类时比较快,但运行时获取对象的速度比较慢,线程不安全

?

?

懒汉模式的对象实例化在类加载的时候,所以加载速度比较慢,但是获取对象的时候就快了。

饿汉模式的对象实例化在获取对象的时候,所以加载的时候很快,那么获取的时候自然也就慢了

?

参考资料:http://www.imooc.com/learn/112

?

发表评论
用户名: 匿名