zoukankan      html  css  js  c++  java
  • 创建型模式之多例模式

    一.定义
      在多例模式中,多例类可以有多个实例,而且多例类必须自己创建、管理自己的实例,并向外界提供自己的实例。
      所谓多例(Multiton Pattern)实际上就是单例模式的自然推广。作为对象的创建模式,多例模式或多例类有以下的特点:
        1、多例类可以有多个实例
        2、多例类必须能够自我创建并管理自己的实例,并向外界提供自己的实例

      多例模式又划分为有上限多例模式和无上限多例模式两种;
      无上限多例模式:与直接new 对象没有什么区别
      有上限多例模式:实际上是单例模式的推广,如果它的上限是1,那么就成了单例模式了.
      
    二、模式结构成员构成
    • Multiton:多例
     
    三.代码示例
    多例模式的几个关键点就在于
    1. 通过实例容器保存实例。
    2. 利用私有构造阻止外部构造。
    3. 提供getInstantce()方法获取实例
    /**
     * 有限多例模式
     */
    public class Multiton {
        private static final Multiton MULTITON_1 = new Multiton();
        private static final Multiton MULTITON_2 = new Multiton();
        private static List<Multiton> list = new ArrayList<Multiton>();     //用于放多个实例的list
        private static final int maxCount = 2;//最多的实例数  
    
        static {
            list.add(MULTITON_1);
            list.add(MULTITON_2);
        }
    
        private Multiton() {
        }//私有构造方法,避免外部创建实例
    
        /**
         * @description: 随机拿取实例
         */
        public static Multiton getInstance() {
            Random random = new Random();
            int current = random.nextInt(maxCount);
            return list.get(current);
        }
    
        /**
         * 工厂方法
         *
         * @param i
         * @return
         */
        public static Multiton getInstance2(int i) {
            switch (i) {
                case 1:
                    return MULTITON_1;
    
                case 2:
                    return MULTITON_2;
                default:
                    return null;
            }
    
        }
    
        /**
         * @description: 指定拿取某一个实例
         */
        public static Multiton getInstance(int index) {
            return list.get(index);
        }
    } 
    View Code
     
     
    四.优点和缺点分析
    优点:
     > 可以控制类的实例数量
    缺点:
     > 提高了类实例维护复杂度
     
    五.应用场景
    >当存在这样的类,只需要有限数量实例的情况下,可以使用多例
     
  • 相关阅读:
    wx小程序用canvas生成图片流程与注意事项
    mysql导入导出csv
    机房测速
    python 后台服务
    python获取硬件信息模块
    nagios外部命令接口
    nginx下的nagios pnp4nagios
    supervisor运行virtualenv环境下的nagios-api
    check_mk通用应用检测插件
    pnp4nagios 性能调优
  • 原文地址:https://www.cnblogs.com/756623607-zhang/p/9211545.html
Copyright © 2011-2022 走看看