java: Multion Pattern
/** * 版权所有 2022 涂聚文有限公司 * 许可信息查看: * 描述: * 多例模式 (Multion Patterns) * 历史版本: JDK 14.02 * 2022-09-12 创建者 geovindu * 2022-09-12 添加 Lambda * 2022-09-12 修改:date * 接口类 * 2022-09-12 修改者:Geovin Du * 生成API帮助文档的指令: *javadoc - -encoding Utf-8 -d apidoc LingualResource.java *https://github.com/TakahikoKawasaki/nv-i18n/blob/master/src/test/java/com/neovisionaries/i18n/LanguageCodeTest.java * */ package com.javapatterns.multilingual; import java.util.HashMap; import java.util.Locale; import java.util.ResourceBundle; import java.util.Locale; import java.text.NumberFormat; public class LingualResource { private String languageCode = "en"; private String regionCode = "US"; private String localeCode = "en_US"; private static final String FILE_NAME = "res"; private static HashMap instances = new HashMap(10); private Locale locale = null; private ResourceBundle resourceBundle = null; private LingualResource lnkLingualResource; private LingualResource(String languageCode, String regionCode) { this.localeCode = languageCode; this.regionCode = regionCode; localeCode = makeLocaleCode(languageCode , regionCode); locale = new Locale(languageCode, regionCode); resourceBundle = ResourceBundle.getBundle(FILE_NAME, locale); instances.put( makeLocaleCode(languageCode, regionCode) , resourceBundle); } private LingualResource() { //do nothing } public synchronized static LingualResource getInstance(String language, String region) { return new LingualResource( language, region ); } public String getLocaleString(String code) { return resourceBundle.getString(code); } private static String makeLocaleCode(String language, String region) { return language + "_" + region; } static public void displayCurrency(Double amount, Locale currentLocale) { NumberFormat formatter; String amountOut; formatter = NumberFormat.getCurrencyInstance(currentLocale); amountOut = formatter.format(amount); System.out.println(amountOut + " " + currentLocale.toString()); } }
调用测试:
LingualResource.displayCurrency(new Double(1234567.89), new Locale("en", "US")); LingualResource.displayCurrency(new Double(1234567.89), new Locale("de", "DE")); LingualResource.displayCurrency(new Double(1234567.89), new Locale("fr", "FR"));
输出:
$1,234,567.89 en_US 1.234.567,89 € de_DE 1 234 567,89 € fr_FR
哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)生存.---Geovin Du(涂聚文)