首页 > 其他分享 >单例模式的运用

单例模式的运用

时间:2023-04-01 15:48:04浏览次数:30  
标签:Multiton getInstance System 模式 单例 println 运用

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

单例模式主要适用于:

  • 系统只需要一个实例对象,或者因为资源消耗太大而只允许创建一个对象
  • 客户调用类的单个实例只允许使用一个公共访问点,除了该公共访问点,不能通过其他途径访问该实例
  • 根据不同的需求,也可以按照单例模式的思想来实现多例模式

标签:Multiton,getInstance,System,模式,单例,println,运用
From: https://www.cnblogs.com/jsanXin/p/17278708.html

相关文章

  • IWDG-CH32FV2x_V3x--低功耗模式的看门狗处理
    芯片睡眠模式下看门狗的使用:     由于独立看门狗的特殊性,一旦开启就不能再被关闭,除非发生复位。而睡眠时程序又是停止运行的,这样就无法及时喂狗,从而导致看门狗复位。那么就需要软件上做些特殊   处理     方法1:在低功耗模式下进行RTC定时唤醒CPU进行......
  • 代理模式 Proxy
    代理类模式在不改变原有类的基础上,代理一个类,并对其方法前后进行增强1.Java动态代理:代理实现某一个接口的类或接口本身接口类publicinterfaceBody{voiddoThing();}实现类:publicclassPersonimplementsBody{@OverridepublicvoiddoThing(){......
  • 企业实践 | 如何在阿里云裸金属服务器上使用UEFI模式实践安装国产银河麒麟V10操作系统
    [点击......
  • 解释器模式(Interpreter Pattern)
    一、概念解释器模式(InterpreterPattern)用于构造一个简单的语言解释器,将字符串按照自定义的方式解释执行,是一种不常用的设计模式除非从事底层开发自己需要去定义较为复杂的表达式,否则基本上不同这个设计模式二、适用场景(1)当一个语言需要解释执行,并可以将该语言中的句子......
  • 单例的各种方式实现,本写法以类A为例,泛型可以使用T
    单例的使用如下:#region单例的各种方式实现,本写法以类A为例,泛型可以使用TpublicclassA{#region单线程----常规,多线程不安全/////<summary>/////私有构造函数,防止初始化/////</summary>//privateA()//{......
  • 命令模式
    概述《设计模式》一书中对于“命令模式”的意图描述如下:将一个请求封装成为一个对象,从而可以使用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作一般“命令模式”的UML图如下所示:一般会在以下几种情况下使用命令模式:需要抽象出待执行的......
  • 装饰设计模式-java
      packagecn.shuishandt.opp;publicclassDecorateTest2{publicstaticvoidmain(String[]args){ Coffecoffe=newCoffe(); System.out.println(coffe.cost()+"=============>"+coffe.info()); Milkmilk=newMilk(coffe);......
  • Redhat/CentOS Linux 系统进入单用户模式
    Redhat/CentOSLinux系统进入单用户模式以CentOS7.9和Redhat8.2为例进行操作,因为CentOS是Redhat的发行版,所以同版本号界面和操作是一样的。CentOS7.9 开机在grub引导界面时,按下e键进入编辑模式: 找到linux16这一行,在行末添加rd.break(注意这里是一整行),使用Ct......
  • 项目一众筹网07_01_SpringSecurity框架简介和用法、SpringSecurity负责的是 权限验证
    项目一众筹网07_01_SpringSecurity文章目录项目一众筹网07_01_SpringSecurity01简介SpringSecurity负责的是权限验证02-SpringSecurity简介03-Spring的注解模式maven引入Spring环境04-准备测试环境05-加入SpringSecurity环境06-实验1-放行首页和静态资源(下一篇)01简介现在主流的权......
  • 插件模式 bug优化2
    目前客户的现象很经典,某一个核cpu打满了!网卡开启了RSS,每个work都绑定了一个cpu。使用strace分析的时候,发现使用总是某一个线程被唤醒,然后这个work一直都在处理io事件。--这个问题原因就是惊群导致。详细就不写了,具体看内核就可知。主要是应用层的问题:由于代码比较老,里面很多......