码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA中的饿汉式和饱汉式单例模式及jdk中Runtime类的单例模式实现方式详解

时间:2015-04-25 12:17:23      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:单例设计模式   java   饱汉式单例   饿汉式单例   runtime类的单例实现   

一、描述

单例模式是一种非常常见的设计模式,即一个类只能有一个对象(实例),一般通过将该类的构造器私有化,来阻止在该类外创建该类的对象,并提供给外界一个唯一的对象(这个对象在该类中创建)。
 
      java中的单例模式常见的有两种实现方式,一种是恶汉方式,即将该类对象用static休息并且在类加载的时候进行初始化;另一种是饱汉方式,在程序中需要用到该对象的时候才初始化,一旦初始化一次就不会再重新生成该对象。 JDK中的Runtime类其实也是一种单例模式,而且其采用的是饿汉的方式。


二、源代码

package tong.yue.day4_25;

import java.io.IOException;
/**
 * 单例模式是一种非常常见的设计模式,即一个类只能有一个对象(实例),一般通过将该类的构造器私有化,来阻止在该类外创建该类的对象,并提供给外界一个唯一的对象(这个对象在该类中创建)。
 * java中的单例模式常见的有两种实现方式,一种是恶汉方式,即将该类对象用static休息并且在类加载的时候进行初始化;
 * 另一种是饱汉方式,在程序中需要用到该对象的时候才初始化,一旦初始化一次就不会再重新生成该对象。
 * jdk中的Runtime类其实也是一种单例模式,而且其采用的是饿汉的方式。
 * @author Administrator
 *
 */

public class Singleton {	
	
	public static void main(String[] args) {
		//饿汉式获取单例类的对象
		Singleton_eager singleton = Singleton_eager.getInstance();
		singleton.print();
		//饿汉式获取单例类的对象
		Singleton_lazy singleton_lazy = Singleton_lazy.getInstance();
		singleton_lazy.print();
		//jdk自带的Runtime类的单例对象的使用
		Runtime runtime = Runtime.getRuntime();
		try {
			//使用Runtime的对象调用windows中的记事本,打开一个记事本。
			runtime.exec("notepad.exe");
		} catch (IOException e) {
			System.out.println("记事本打开失败!");
			e.printStackTrace();
		}
	}
}
//饿汉式单例模式,在类加载的时候创建一个对象,之后就不再重复创建
class Singleton_eager {
	//声明为static类型,在类加载的时候创建一个对象
	private static Singleton_eager singleton_eager = new Singleton_eager();
	private Singleton_eager(){
		
	}
	
	public static Singleton_eager getInstance() {
		return singleton_eager;
	}
	
	public void print() {
		System.out.println(singleton_eager);
	}
}
//饱汉式单例模式,当程序第一次使用该类的对象时创建对象,只创建一次,之后就不再重复创建
class Singleton_lazy{
	private static Singleton_lazy singleton_lazy = null;
	private Singleton_lazy(){}
	
	public static Singleton_lazy getInstance() {
		//若是第一次使用该对象,那个就创建一个,否则就使用一个已经创建好的对象
		if (singleton_lazy==null) {
			singleton_lazy = new Singleton_lazy();
		}
		return singleton_lazy;
	}
	
	public void print() {
		System.out.println(singleton_lazy);
	}
}


三、JDK中Runtime类的单例实现

package tong.yue.day4_25;
/**
 * JDK中的Runtime类的单例模式为饿汉式
 * @author tong
 *
 */
public class Runtime {
	    private static Runtime currentRuntime = new Runtime();	    
	    public static Runtime getRuntime() {
	        return currentRuntime;
	    }
	    
	    private Runtime() {}

}




JAVA中的饿汉式和饱汉式单例模式及jdk中Runtime类的单例模式实现方式详解

标签:单例设计模式   java   饱汉式单例   饿汉式单例   runtime类的单例实现   

原文地址:http://blog.csdn.net/tongyuehong137/article/details/45268835

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!