java 设计模式之:多例(multiton)模式

java 设计模式之:多例(multiton)模式

ID:2247686

大小:25.50 KB

页数:3页

时间:2017-11-15

java 设计模式之:多例(multiton)模式_第1页
java 设计模式之:多例(multiton)模式_第2页
java 设计模式之:多例(multiton)模式_第3页
资源描述:

《java 设计模式之:多例(multiton)模式》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、java设计模式之:多例(Multiton)模式作为对象的创建模式,多例模式中的多例类可以有多个实例,而且多例类必须自己创建,管理自己的实例,并向外界提供自己的实例。 案例:国际化解决方案实际方案是分层方案,即MVC模式。MVC模式将系统分为多个层次。也就是说,系统的内核可以是纯英文的。在内核外部增加一个壳层负责语言的翻译工作。所谓系统内核就是系统的模型,而翻译壳层便是视图的一部分,对多语言的支持属于视图功能,因此,不应该在内核解决,应当在视图解决。多例模式的特点:所谓多例(MultitonPattern)实

2、际上就是单例模式的自然推广。作为对象的创建模式,多例模式或多例类有以下的特点:1、多例类可以有多个实例2、多例类必须自己创建,管理自己的实例,并向外界提供自己的实例。这种允许有限个实例并向整个JVM提供自己实例的类叫做多例类,这种模式叫做多例模式本例就使用多例模式来实现消息资源对象,需要构造出能提供有限个实例,每个实例有个不相同的属性(即Locale代码)的代码。(还记得Struts中的国际化吗?不记得就先看书复习一下吧!!有上限的多例类已经把实例的上限当作逻辑的一部分,并建造到了多例类的内部,这种多例模式叫

3、做有上限多例模式。比如每一麻将局都有两个骰子,因此骰子就应当是双态类,这里就以这个系统为例,说明多例模式的结构。importjava.util.Random;importjava.util.Date;classDie{ privatestaticDiedie1=newDie(); privatestaticDiedie2=newDie();  /** *私有的构造函数保证外界无法直接将此类实例化 * */ privateDie() {  }  /** *工厂方法 */ publicstaticDiegetIn

4、stance(intwhichOne) {  if(whichOne==1)  {   returndie1;  }  else  {   returndie2;  } }   /**  *投骰子,返回一个在1-6之间的随机书  */  publicsynchronizedintdice()  {   Dated=newDate();   Randomr=newRandom(d.getTime());   intvalue=r.nextInt();//获取随机数   value=Math.abs(value)

5、;//获取随机数的绝对值   value=value%6;//对6取模   value+=1;//由于value的范围是0-5,所以value+1成为1-6   returnvalue;  }}/** *测试的客户端,投掷骰子 */publicclassDieClient{ privatestaticDiedie1,die2;  publicstaticvoidmain(String[]args) {  die1=Die.getInstance(1);  die2=Die.getInstance(2);   

6、 System.out.println(die1.dice());  System.out.println(die2.dice()); }}由于有上限的多例类对实例的数目有上限,因此有上限的多例类在这个上限等于1时,多例类就回到了单例类,因此多例类时单例类的推广,而单例类时多例类的特殊情况。一个有上限的多例类可以使用静态变量存储所有的实例,特别时在实例数目不多的时候,可以使用一个个的静态变量存储一个个的实例。在数目较多的时候,就需要使用静态聚集存储这些实例。无上限多例模式实例数目没有上限的多例模式叫无上限多例

7、模式。由于没有上限的多例类对实例的数目是没有限制的,因此,虽然这种多例模式是单例模式的推广,但是这种多例类并不一定能够回到单例类。由于事先不知道要创建多少个实例,因此,必然使用聚集管理所有的实例。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。