多例模式

    多例模式中的多例类可以有多个实例,并且多例类必须自己创建、管理自己的实例,并向外界提供自己的实例。

多例类结构图:

多例模式


 

一、有上限多例模式
    一个实例数目有上限的多例类已经把实例的上限当做逻辑的一部分,并创建到了多例类的内部,这种多例模式叫做有上限多例模式。一个有上限的的多例类可以使用静态变量存储所有的实例,特别是在实例数目不多的时候,可以使用一个个的静态变量存储一个个的实例。在数目较多的时候,就需要使用静态聚集存储这些实例。

1、类图

多例模式

2、java代码
package multiton.finite;
import java.util.Date;
import java.util.Random;
public class Die { 
 private static Die die1 = new Die();
 private static Die die2 = new Die();
 private Die(){
  System.out.println("Die is created............");
 }
 public static Die getIntance(int whichOne){
  if(whichOne==1){
   return die1;
  }else {
   return die2;
  }
 }
 synchronized public int dice(){
  Date date = new Date();
  Random r = new Random(date.getTime());
  int value = r.nextInt();
  value = Math.abs(value);
  value = value%6;
  value += 1;
  return value;
 }
}
 
 
package multiton.finite;
public class Client {
 private static Die die11,die12,die21,die22;
 public static void main(String args[]){
  die11 = Die.getIntance(1);
  die12 = Die.getIntance(1);
  die21 = Die.getIntance(2);
  die22 = Die.getIntance(2);
  System.out.println("die11 = " + die11.dice());
  System.out.println("die12 = " + die12.dice());
  System.out.println("die21 = " + die21.dice());
  System.out.println("die22 = " + die22.dice());
 }
}
 
二、无上限多例模式
    多例类的实例数目并不需要有上限,实例数目没有上限的多例模式就叫做无上限多例模式。由于事先不知道要创建多少个实例,因此,必然使用聚集管理所有的实例。
1、类图
多例模式
 
三、有状态的和没状态的多例类
    如同单例类可以分成为有状态的和没有状态的两种一样,多例类也可以分成有状态和没有状态的两种。
    多例对象的状态如果是可以在加载后改变的,那么这种多例对象叫做可变多例对象;如果多例对象的状态在加载后不可以改变,那么这种多例对象叫做不变多例对象。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值