单例模式的运用

(1)案例背景:

在实际的运用中,我们有时一个类不止需要产生一个对象,可能需要两个或者三个。在课上我们讲过,使用单例模式的思想可以实现多例模式,从而确保系统中某个类的对象只能存在有限个,请设计并实现代码,从而实现多例模式

(2)实现步骤:

  1. 由于本题的实现较为复杂,所以我们直接给出参考类图

image

  1. 根据类图,实现多例模式的代码

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)案例总结:

单例模式主要适用于:

  • 系统只需要一个实例对象,或者因为资源消耗太大而只允许创建一个对象
  • 客户调用类的单个实例只允许使用一个公共访问点,除了该公共访问点,不能通过其他途径访问该实例
  • 根据不同的需求,也可以按照单例模式的思想来实现多例模式
posted @   yuxin!!  阅读(75)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示