《Java与模式》学习笔记(7)——Multiton

所谓的多例模式(Multiton Pattern),实际上就是单例模式的推广。作为对象的创建模式,多例模式或多例类有以下的特点:
  • 多例类可有多个实例。
  • 多例类必须自己创建、管理自己的实例,并向外界提供自己的实例。
 
按照实例数目是否有上限,多例模式可以分为有上限多例类和无上限多例类;如同单例类可以分成有状态的和没有状态的两种一样,多例类也可以分成有状态的和没有状态的两种。多例对象的状态如果是可以在加载后改变的,那么这种多例对象叫做可变多例对象(Mutable Multiton);如果多例对象的状态在加载后不可以改变,那么这种多例对象叫做不变多例对象(Immutable Multiton)。显然不变多例类的情形较为简单,而可变多例类的情形较为复杂。
 
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 getInstance(int whichOne) {
        
if (whichOne == 1{
            
return die1;
        }
 else {
            
return die2;
        }

    }


    
public synchronized int dice() {
        Date d 
= new Date();
        Random r 
= new Random(d.getTime());
        
int value = r.nextInt();
        value 
= Math.abs(value);
        value 
= value % 6;
        value 
+= 1;
        System.out.println(value);
        
return value;
    }

}
 
package  com.javapatterns.multilingual.dice;

public   class  Client  {
    
private static Die die1;
    
private static Die die2;

    
public static void main(String[] args) {
        die1 
= Die.getInstance(1);
        die2 
= Die.getInstance(2);
        die1.dice();
        die2.dice();
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值