• Java——多例模式


    一、概述

    多例模式,是一种常用的软件设计模式,通过多例模式可以保证系统中,应用该模式的类有固定数量的实例。多例类要自我创建并管理自己的实例,还要向外界提供获取本类实例的方法。

    二、使用场景和好处

    • 使用场景:当程序中需要对某个类创建的对象进行控制管理时,使用多例模式,比如线程池
    • 好处:允许有多个对象,但多个对象被统一管理
    线程池 = Executors.newFixedThreadPool(3);
    

    三、实现步骤

    多例模式的实现步骤分为以下5步

    1. 创建一个类,将构造方法私有化,使其不能在类的外部通过 new 关键字实例化该类对象
    2. 在类中定义该类被创建对象的总数量
    3. 在类中定义存放对象的 List 集合
    4. 在类中提供静态代码块,在静态代码块中创建类的实例
    5. 提供获取类实例的静态方法

    四、代码实现

    使用多例模式定义一个类

    public class Multition {
        // 构造方法私有化,不允许外界创建本类对象
        public Multition() {
        }
        
        // 定义该类被创建的总数量
        private static final int maxCount = 3;
        
        // 定义存放类实例的list集合
        private static List<Multition> instanceList = new ArrayList<>();
        
        // 在静态代码块中创建本类的多个实例,并存放到list集合中
        static {
            for (int i = 0; i < maxCount; i++) {
                Multition multition = new Multition();
                instanceList.add(multition);
            }
        }
    
        // 给外界提供一个获取类对象的方法
        public static Multition getInstance(){
            int i = new Random().nextInt(maxCount);
            return instanceList.get(i);
        }
    }
    

    在测试类中创建多个实例对象进行测试

    public class TestMult {
        @Test
        public void test01(){
            for (int i = 0; i < 10; i++) {
                Multition instance = Multition.getInstance();
                System.out.println(instance);
            }
            //com.itheima.sh.Multition@5d11346a
            //com.itheima.sh.Multition@5d11346a
            //com.itheima.sh.Multition@7a36aefa
            //com.itheima.sh.Multition@5d11346a
            //com.itheima.sh.Multition@17211155
            //com.itheima.sh.Multition@5d11346a
            //com.itheima.sh.Multition@17211155
            //com.itheima.sh.Multition@7a36aefa
            //com.itheima.sh.Multition@7a36aefa
            //com.itheima.sh.Multition@7a36aefa
        }
    }
    

    可以发现,只存在3个不同的实例对象。

  • 相关阅读:
    多路径下使用ASMLIB创建ASM磁盘
    linux7.4开启hugepages
    Oracle 12CR2 RAC 升级
    深度思考比勤奋更重要(转)
    Oracle最大保护模式是有延迟的
    mysql主从安装简记
    Socket 监控服务器运行状态
    12C Sharding 学习安装
    惊喜与局限并存,12c Sharding内测报告抢先看!
    Oracle 12c 分片(Sharding)技术
  • 原文地址:https://www.cnblogs.com/xulinjun/p/15092615.html
Copyright © 2020-2023  润新知