《Java与模式》学习笔记——Multiton
Posted brooksychen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《Java与模式》学习笔记——Multiton相关的知识,希望对你有一定的参考价值。
所谓的多例模式(Multiton Pattern),实际上就是单例模式的推广。作为对象的创建模式,多例模式或多例类有以下的特点:
- 多例类可有多个实例。
- 多例类必须自己创建、管理自己的实例,并向外界提供自己的实例。
按照实例数目是否有上限,多例模式可以分为有上限多例类和无上限多例类;如同单例类可以分成有状态的和没有状态的两种一样,多例类也可以分成有状态的和没有状态的两种。多例对象的状态如果是可以在加载后改变的,那么这种多例对象叫做可变多例对象(Mutable Multiton);如果多例对象的状态在加载后不可以改变,那么这种多例对象叫做不变多例对象(Immutable Multiton)。显然不变多例类的情形较为简单,而可变多例类的情形较为复杂。
package
com.javapatterns.multilingual.dice;
![](https://image.cha138.com/20221202/3e591dd088584d0f9ed1f15d3664faf0.jpg)
import
java.util.Random;
import
java.util.Date;
![](https://image.cha138.com/20221202/3e591dd088584d0f9ed1f15d3664faf0.jpg)
![](https://image.cha138.com/20221202/2e8cb2bf20d64ab7860b3899a70fd197.jpg)
public
class
Die
...
private static Die die1 = new Die();
private static Die die2 = new Die();
![](https://image.cha138.com/20221202/1ddbfde2a2c34b94ad8ab685e0d3060c.jpg)
![](https://image.cha138.com/20221202/3e0a6f2c4fcf43218246cb7b6c8ad66f.jpg)
private Die() ...
![](https://image.cha138.com/20221202/1ddbfde2a2c34b94ad8ab685e0d3060c.jpg)
![](https://image.cha138.com/20221202/3e0a6f2c4fcf43218246cb7b6c8ad66f.jpg)
public static Die getInstance(int whichOne) ...
![](https://image.cha138.com/20221202/3e0a6f2c4fcf43218246cb7b6c8ad66f.jpg)
if (whichOne == 1) ...
return die1;
![](https://image.cha138.com/20221202/3e0a6f2c4fcf43218246cb7b6c8ad66f.jpg)
else ...
return die2;
![](https://image.cha138.com/20221202/1ddbfde2a2c34b94ad8ab685e0d3060c.jpg)
![](https://image.cha138.com/20221202/3e0a6f2c4fcf43218246cb7b6c8ad66f.jpg)
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;
![](https://image.cha138.com/20221202/3e591dd088584d0f9ed1f15d3664faf0.jpg)
![](https://image.cha138.com/20221202/2e8cb2bf20d64ab7860b3899a70fd197.jpg)
public
class
Client
...
private static Die die1;
private static Die die2;
![](https://image.cha138.com/20221202/1ddbfde2a2c34b94ad8ab685e0d3060c.jpg)
![](https://image.cha138.com/20221202/3e0a6f2c4fcf43218246cb7b6c8ad66f.jpg)
public static void main(String[] args) ...
die1 = Die.getInstance(1);
die2 = Die.getInstance(2);
die1.dice();
die2.dice();
![](https://image.cha138.com/20221202/1bcbb311fb6c4b7f9de4d165c7b25480.jpg)
以上是关于《Java与模式》学习笔记——Multiton的主要内容,如果未能解决你的问题,请参考以下文章
《Java与模式》学习笔记——Factory Method
《Java与模式》学习笔记——Factory Method
《Java与模式》学习笔记——Factory Method
《Java与模式》学习笔记——Abstract Factory
《Java与模式》学习笔记——Abstract Factory
《Java与模式》学习笔记——Abstract Factory