######### 琉璃瓦貼圖:單例模式使用枚舉的方式實現,和源碼分析_遂甯英語網
ad
ad

琉璃瓦貼圖:單例模式使用枚舉的方式實現,和源碼分析

更新时间:2019-07-11 22:05 點擊數:

一、枚舉方式實現單例

package com.model.design.base.node01.singleton;
import org.junit.Test;
/**
* 类级内部类里面创建对象实例
*/
public class C06_Singleton {
@Test
public void test01 (){
SingletonDemo INSTANCE1 = SingletonDemo.INSTANCE ;
SingletonDemo INSTANCE2 = SingletonDemo.INSTANCE ;
System.out.println(INSTANCE1 == INSTANCE2);
INSTANCE1.info();
INSTANCE2.info();
}
}
enum SingletonDemo {
INSTANCE ;
public void info (){
System.out.println("枚舉方式實現單例");
}
}

優缺點說明:

1) JDK1.5中添加的枚举来实现单例模式。可以避免多线程并发问题,而且还能防止反序列化重新创建新的对象。
2) 这种方式是Effective Java作者Josh Bloch 提倡的方式

二、JDK源碼單例模式

Runtime單例實現

1、案例演示

/**
* JDK 单例模式分析
*/
public class C07_Singleton {
public static void main(String[] args) {
Runtime runtime1 = Runtime.getRuntime() ;
Runtime runtime2 = Runtime.getRuntime() ;
/*
* 1229416514
* 1229416514
*/
System.out.println(runtime1.hashCode());
System.out.println(runtime2.hashCode());
}
}

2、源代碼分析

public class Runtime {
private static Runtime currentRuntime = new Runtime();
public static Runtime getRuntime() {
return currentRuntime;
}
private Runtime() {}
}

基于餓漢模式實現的單例模式。

三、單例模式注意事項

單例模式注意事項和細節說明
1) 单例模式保证了 系统内存中该类只存在一个对象,节省了系统资源,对于一些需要频繁创建销毁的对象,使用单例模式可以提高系统性能。
2) 当想实例化一个单例类的时候,必须要记住使用相应的获取对象的方法,而不是使用new Object() 的方式。
3) 单例模式使用的场景:需要频繁的进行创建和销毁的对象、创建对象时耗时过多或耗费资源过多(即:重量级对象),但又经常用到的对象。
单例模式使用枚举的方式实现,和源码分析


琉璃瓦貼圖:單例模式使用枚舉的方式實現,和源碼分析
ad
ad
圖文信息
ad