(1)案例背景:
在实际的运用中,我们有时一个类不止需要产生一个对象,可能需要两个或者三个。在课上我们讲过,使用单例模式的思想可以实现多例模式,从而确保系统中某个类的对象只能存在有限个,请设计并实现代码,从而实现多例模式
(2)实现步骤:
- 由于本题的实现较为复杂,所以我们直接给出参考类图
- 根据类图,实现多例模式的代码
Multiton类如下:
//单例模式实现多例,实现3个
public class Multiton {
private static ArrayList<Multiton> array = new ArrayList<>();
private Multiton() {
}
public static Multiton getInstance(){
if (array.size() < 3){
System.out.println("创建实例成功");
Multiton multiton = new Multiton();
array.add(multiton);
return multiton;
}else {
System.out.println("不再创建更多实例");
return array.get(new Random().nextInt(array.size()));
}
}
public int random() {
int rand = (int) (Math.random()*3);
return rand;
}
}
测试类如下
public class Client {
public static void main(String[] args) {
Multiton m1 = Multiton.getInstance();
Multiton m2 = Multiton.getInstance();
Multiton m3 = Multiton.getInstance();
Multiton m4 = Multiton.getInstance();
System.out.println("m1=m2"+(m1 == m2));
System.out.println("m2=m3"+(m2 == m3));
System.out.println("m3=m4"+(m3 == m4));
}
}
(3)案例总结:
单例模式主要适用于:
- 系统只需要一个实例对象,或者因为资源消耗太大而只允许创建一个对象
- 客户调用类的单个实例只允许使用一个公共访问点,除了该公共访问点,不能通过其他途径访问该实例
- 根据不同的需求,也可以按照单例模式的思想来实现多例模式