Java与模式学习笔记 —— 多例(Multiton)模式

一、多例模式的特点

  • 多例类可有多个实例
  • 多例类必须自己创建、管理自己的实例,并向外界提供自己的实例

二、有上限多例类

两个骰子Die为例:

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;
		return value;
	}
}

通过饿汉式创建两个Die实例,根据传入的参数返还两个实例中的一个。dice()方法相当于掷骰子。

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

当上限等于1时,有上限的多例类就回到了单例类。因此,在这种情况下,多例类是单例类的推广,单例类是多例类的特殊情况。

三、无上限多例模式

当无上限时,可以说多例模式是单例模式的推广,但是反过来,这种多例类不一定能够回到单例类。
无上限多例模式必然使用聚集管理所有的实例。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值