Java模式设之多态模式与多语言支持.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java模式设之多态模式与多语言支持

Java模式设计之多态模式与多语言支持作为对象的创建模式,多态模式中的多态类可有多个实例;而且多态类必须自己创建、管理自己的实例,并向外界提供自己的实例。读者在阅读本文的时候,可以参考阅读笔者的《Java与模式》一书(刚由电子工业出版社出版)中的相关章节。   引言 一个真实的项目   这是一个真实的、面向全球消费者的华尔街金融网站项目的一部份。按照项目计划书,这个网站系统是要由数据库驱动的,并且要支持十九种不同的语言;而且在将来支持更多的语言。消费者在登录到系统上时可以选择自己所需要的语言,系统则根据用户的选择将网站的静态文字和动态文字全部转换为用户所选择的语言。   经过讨论,设计师们同意对静态文字和动态文字采取不同的解决方案:   把所有的网页交给翻译公司对上面的静态文字进行翻译, 而网页上面的动态内容则需要程序解决。   在进行了研究后,设计师们发现,他们需要解决的动态文字的“翻译”问题,实际上是将数据库中的一些静态或者半静态的数据进行“翻译”。下面就是一个典型的数据表: 货币代码 货币名称 货币尾数 USD America (United States of America), Dollars 2 CNY China, Yuan Renminbi 2 EUR France, Euro 2 JPY Japan, Yen 0   代码清单1、为英文用户的准备的货币列表。   货币代码永远是上面所看到的英文代码,但是货币名称应当根据用户所选择的语言不同而不同。比如对中文读者就应当翻译成为下面的表: 货币代码 货币名称 货币尾数 USD 美国 (美利坚合众国), 美元 2 CNY 中国,人民币元 2 EUR 法国, 欧元 2 JPY 日本, 日元 0   代码清单2、为中文用户准备的货币列表。   这样的表会在网页上作为下拉菜单出现,用户看到的是货币名称,而系统内部使用的是货币代码。   国际化解决方案   这样的问题就是国际化的问题,所谓国际化就是Internationalization,简称作i18n(请参见本章最后的问答题)。   设计师所采取的实际方案是分层方案,也就是MVC模式。MVC模式将系统分为三个层次,也就是模型(Model)、视图(View)、控制器(Control)三个部份。国际化是视图部份的问题,因此应当在视图部份得到解决。      图1、MVC模式的示意图。   换言之,系统的内核可以是纯英文的;在内核外部增加一个壳层负责语言翻译工作。请见下面的概念图:      图2、英文内核和翻译壳层的概念图。   所谓内核就是系统的模型,而翻译壳层便是视图的一部份。对多语言的支持属于视图功能,因此不应当在内核解决,而应当在视图解决。这就是设计师们达成的总体方案。   多态模式 多态模式的特点   所谓的多态模式(Multiton Pattern),实际上就是单态模式的自然推广。作为对象的创建模式,多态模式或多态类有以下的特点:   多态类可有多个实例; 多态类必须自己创建、管理自己的实例,并向外界提供自己的实例。   单态类一般情况下最多只可以有一个实例,请见下面的结构图:      图3、单态类的结构图。   但是单态模式的精神是允许有限个实例,并不是仅允许一个实例;这种最多只允许有限多个实例,并向整个JVM提供自己实例的类叫做多态类(Multiton),这种模式叫做多态模式(Multiton Pattern),请参见下面的结构图。      图4、多态类的结构图。   本章就需要用多态模式来实现资源对象,需要构造出能提供有限个实例,每个实例有各不相同的属性(即Locale代码)。   有上限多态类   一个实例数目有上限的多态类已经把实例的上限当作逻辑的一部份建造到了多态类的内部;这种多态模式叫做有上限多态模式。   比如每一麻将牌局都需要两个色子,因此色子就应当是双态类。这里就以这个系统为例,说明多态模式的结构。      图5、色子的类图。   下面就是多态类Die(色子)的源代码: package com.javapatterns.multilingual.dice; import java.util.Random; import java.util.Date; public class Die {   private static Die die1 = new Die();   private static Die die2 = new Die();   /**   *  私有的构造子保证外界无法   *  直接将此类实例化   */   private Die()   {   }   /**   *  工厂方法   */   public static Die getInst

文档评论(0)

vbc516 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档