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

  

 

posted @ 2022-09-14 21:17  ®Geovin Du Dream Park™  阅读(37)  评论(0)    收藏  举报