单例模式的运用

(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 @ 2023-04-01 15:28  yuxin!!  阅读(93)  评论(0)    收藏  举报