java 饱汉 作用_JAVA中的饿汉式和饱汉式单例模式及jdk中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() {}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值