多例模式是相对于单例模式而言的,指的是最多有固定数量的实例,如果数量不限,直接new就可以了,不存在模式一说。这个用得比较少。
package com.pocketdigi.patterns.multition;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
/**
* 多例模式
*/
public class Multition {
String name;
// 实例数
private static final int MAX_INSTANCE = 2;
private static List instanceList = new ArrayList(MAX_INSTANCE);
private static List instanceInfoList = new ArrayList(MAX_INSTANCE);
static {
for (int i = 0; i < MAX_INSTANCE; i++) {
String n1 = "name" + i;
Multition m1 = new Multition(n1);
instanceList.add(m1);
}
}
/**
* 随机返回一个实例
*/
public static Multition getInstance() {
Random r = new Random();
return instanceList.get(r.nextInt(MAX_INSTANCE));
}
/**
* 返回指定的实例
* @param name
* @return
*/
public static Multition getInstance(String name) {
int index = instanceInfoList.indexOf(name);
if (index >= 0)
return instanceList.get(instanceInfoList.indexOf(name));
return null;
}
private Multition(String name) {
this.name = name;
instanceInfoList.add(name);
}
@Override
public String toString() {
// TODO Auto-generated method stub
return name;
}
}
调用:
for(int i=0;i<10;i++)
{
System.out.println(Multition.getInstance());
}
System.out.println(Multition.getInstance("name1"));