快速业务通道

Java模式设计之多态模式与多语言支持 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
ocale);

代码清单4、怎样使用Locale对象和ResourceBundle对象。

在上面的例子里面,res对象会加载一个名为shortname_fr_FR.properties的Resource文件。

系统的设计

这里给出系统的结构图。其中LingualResourceTester是一个示意性的客户端类,而LingualResource是一个多态类。

Java模式设计之多态模式与多语言支持 - 编程入门网

图7、多态类LingualResource和客户端类的类图结构。

下面就是这个多态类的源代码:

package com.javapatterns.multilingual; import java.util.HashMap; import java.util.Locale; import java.util.ResourceBundle; public class LingualResource {    private String language = "en";    private String region = "US";    private String localeCode = "en_US";    private static final String FILE_NAME = "res";    private static HashMap instances =      new HashMap(19);    private Locale locale = null;    private ResourceBundle resourceBundle = null;    private LingualResource lnkLingualResource;   /**    *  私有的构造子保证外界无法直接将此类实例化    */    private LingualResource(      String language, String region)    {      this.localeCode = language;      this.region = region;      localeCode =        makeLocaleCode(language , region);      locale = new Locale(language, region);      resourceBundle =        ResourceBundle.getBundle(FILE_NAME, locale);      instances.put( makeLocaleCode(language, region) ,        resourceBundle);    }   /**    *  私有的构造子保证外界无法直接将此类实例化    */    private LingualResource()    {      file://do nothing    }   /**    *  工厂方法,返还一个具有指定的内部状态的实例    */    public synchronized static LingualResource      getInstance(String language, String region)    {      if (instances.containsKey(        makeLocaleCode(language , region )))      {        return (LingualResource) instances.get(          makeLocaleCode(language , region ));      }      else      {        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;    } }

Java模式设计之多态模式与多语言支持(6)

时间:2010-12-13

代码清单5、多态类LingualResource的源代码。其中的makeLocaleCode()是一个辅助性的方法,在传入语言代码和地区代码时,此方法可以返回一个Locale代码。

这个多态类的构造子是私有的,因此不能用new关键字来实例化。所有的实例必须通过调用静态getInstance()方法来得到。在getInstance()方法被调用时,程序会首先检查传入的Locale代码是否已经在instances集合中存在;如果已经存在,即直接返回它所对应的LingualResource对象,否则就会首先创建一个这个Locale代码所对应的LingualResource对象,将之存入instances集合,并返回这个实例。

下面给出一个客户端的源代码:

package com.javapatterns.multilingual; public class LingualResourceTester {    public s

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号