import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.text.MessageFormat; import java.util.Locale; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; public enum JsonFileUtil { INSTANCE; private static final String imgPathFormat = "/image-generation-sample-{0}.json"; private static final String pdfPathFormat = "/pdf-generation-sample-{0}.json"; private static final String imgFileType = "img"; private static final String pdfFileType = "pdf"; private JsonParser jsonParser = new JsonParser(); private final JsonObject jsonObject_zhcn_pdf; private final JsonObject jsonObject_zhtw_pdf; private final JsonObject jsonObject_us_pdf; private final JsonObject jsonObject_zhcn_img; private final JsonObject jsonObject_zhtw_img; private final JsonObject jsonObject_us_img; private JsonFileUtil() { jsonObject_zhcn_pdf = getInitedJsonObject(Locale.SIMPLIFIED_CHINESE, pdfFileType); jsonObject_zhtw_pdf = getInitedJsonObject(Locale.TRADITIONAL_CHINESE, pdfFileType); jsonObject_us_pdf = getInitedJsonObject(Locale.US, pdfFileType); jsonObject_zhcn_img = getInitedJsonObject(Locale.SIMPLIFIED_CHINESE, imgFileType); jsonObject_zhtw_img = getInitedJsonObject(Locale.TRADITIONAL_CHINESE, imgFileType); jsonObject_us_img = getInitedJsonObject(Locale.US, imgFileType); } private JsonObject _retriveJsonObject(Locale locale, String fileType) { JsonObject jsonObject = null; String pathFormat = null; if (fileType == "pdf") pathFormat = pdfPathFormat; else if (fileType == "img") pathFormat = imgPathFormat; String jsonPath = retrivejsonFilePath(pathFormat, locale); InputStream jsonIs = this.getClass().getResourceAsStream(jsonPath); BufferedReader jsonReader = new BufferedReader(new InputStreamReader(jsonIs)); JsonElement jsonElement = jsonParser.parse(jsonReader); jsonObject = jsonElement.getAsJsonObject(); return jsonObject; } private JsonObject getInitedJsonObject(Locale locale, String fileType) { JsonObject jsonObject = null; if (Locale.US == locale) { if (fileType == imgFileType) { if (null != jsonObject_us_img) jsonObject = jsonObject_us_img; else jsonObject = _retriveJsonObject(Locale.US, imgFileType); } else if (fileType == pdfFileType) { if (null != jsonObject_us_pdf) jsonObject = jsonObject_us_pdf; else jsonObject = _retriveJsonObject(Locale.US, pdfFileType); } } else if (Locale.SIMPLIFIED_CHINESE == locale) { if (fileType == imgFileType) { if (null != jsonObject_zhcn_img) jsonObject = jsonObject_zhcn_img; else jsonObject = _retriveJsonObject(Locale.SIMPLIFIED_CHINESE, imgFileType); } else if (fileType == pdfFileType) { if (null != jsonObject_zhcn_pdf) jsonObject = jsonObject_zhcn_pdf; else jsonObject = _retriveJsonObject(Locale.SIMPLIFIED_CHINESE, pdfFileType); } } else if (Locale.TRADITIONAL_CHINESE == locale) { if (fileType == imgFileType) { if (null != jsonObject_zhtw_img) jsonObject = jsonObject_zhtw_img; else jsonObject = _retriveJsonObject(Locale.TRADITIONAL_CHINESE, imgFileType); } else if (fileType == pdfFileType) { if (null != jsonObject_zhtw_pdf) jsonObject = jsonObject_zhtw_pdf; else jsonObject = _retriveJsonObject(Locale.TRADITIONAL_CHINESE, pdfFileType); } } return jsonObject; } private String retrivejsonFilePath(String formatPath, Locale locale) { String language = "en_US"; if (Locale.TRADITIONAL_CHINESE.equals(locale)) language = "zh_CN"; else if (Locale.SIMPLIFIED_CHINESE.equals(locale)) language = "zh_TW"; String jsonPath = MessageFormat.format(formatPath, language); return jsonPath; } public JsonObject retriveJsonObject(Locale locale, String fileType) { return getInitedJsonObject(locale, fileType); } }
相关推荐
单例模式的七种实现方法以及分析,可以作文大作业提交 1.前言 4 1.1 课题的研究背景 4 ...3.7使用枚举类实现单例模式 13 4.单例模式怎么用才合理? 14 4.1测试 14 4.2无边界 15 5.设计模式学习总结: 15
2019-11-24,单例模式,枚举方式实现单例模式 代码详解,注释通俗易懂,源码提供参考。下载之后未经许可,请勿乱传。
主要介绍了 JAVA 枚举单例模式及源码分析的实例详解的相关资料,需要的朋友可以参考下
一个简单的java工程,包含注释,一目了然,其中包含了单例模式的所有实现方式,懒汉式,饿汉式,双重校验,枚举,静态内部类等方式实现单例。
通过Java语言,主要实现了六种单例的生成方法,包括懒汉式、饿汉式、双重校验锁、枚举、静态内部类,可以根据实际情况选择使用
枚举实现单例模式static修饰下是怎么做到线程安全的?完全不使用synchronized实现单例模式1. CAS(AtomicReference)实现单例模式2. ThreadLocal实现单例模式如何破坏单例如何防止单例被破坏参考文章 单例模式有...
一个单例模式的晋级过程...枚举实现单例使用推荐 什么是单例? 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一
通常单例模式在Java语言中,有两种构建方式: 懒汉式—线程不安全:最基础的实现方式,线程上下文单例,不需要共享给所有线程,也不需要加synchronize之类的锁,以提高性能。...java中枚举类本身也是一种单例模式
Java-设计模式-单例模式-实现源码(简单实现、双重检查锁、静态内部类、枚举类)
① 应用场景实例② 模式优点③ 模式缺点④ 注意事项■ 单例模式的五种实现方式饿汉式代码实现懒加载代码实现双重检测锁代码实现静态内部类代码实现(也是懒加载的一种方式)枚举代码实现:diamond_suit: 总结 ...
通过单例模式可以保证系统中,**应用该模式的这个类只有一个实例**。即一个类只有一个对象实例。 #### 单例设计模式实现步骤 1. 将构造方法私有化,使其不能在类的外部通过new关键字实例化该类对象。 2. 在该类内部...
NULL 博文链接:https://java--hhf.iteye.com/blog/2171034
【设计模式】(四)–创建型模式–单例模式单例模式的定义饿汉式单例模式懒汉式单例模式饿汉式与懒汉式的区别:单例模式的优点单例模式的缺点Java中其他生成单例的方式使用Spring框架...
本篇文章主要介绍了Java实现单例的3种普遍的模式,饿汉式、懒汉式、枚举式。具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
枚举模式public enum Singleton3 {Holder模式public class Singleton4 {* 类级内部类,也就是静态的成员内部类
C中实现单例模式7.4 子类化Singleton7.5 线程安全7.6 在Cocoa Touch框架中使用单例模式7.6.1 使用UIApplication类7.6.2 使用UIAccelerometer类7.6.3 使用NSFileManager类7.7 总结第三部分 接口适配第8章 适配器8.1 ...
3.如果枚举类中只有一个对象,则可以作为单例模式的实现方式。 二、如何定义枚举类 方式一:Jdk5.0之前,自定义枚举类 方式二:jdk5.0之后,可以使用enum关键字定义枚举类 三、Enum类的主要方法: 四、使用enum...
常见的五种单例模式实现方法: 主要: 饿汉式(线程安全, 调用效率高, 但是不能延时加载) 懒汉式(线程安全, 调用效率不高, 但是可以延时加载) 其他: 双重检测锁式(由于 JVM 底层内部模型原因, 偶尔会出问题, 不建议使用...
单例模式 6 final关键字 6 抽象类 8 抽象类--模板设计模式 9 接口 9 内部类 11 匿名内部类的使用(重要!!!!!!!) 13 成员内部类的使用 13 静态内部类的使用 14 枚举的二种实现方式 14 自定义类实现枚举 14 使用 enum ...
单例模式 多线程时是否重复创建单例对象 加载类的速度 运行时获取对象的速度 线程安全 代码链接 适用情形 其它 懒汉模式 会 快 慢 否 某个单例用的次数不是很多,但是这个单例提供的功能又非常复杂,而且加载和初始...