zoukankan      html  css  js  c++  java
  • 多例模式【其他模式】

    多例模式

    public class Multition {
        /**
         * 多例模式:
         * Ensure a class only has limited number of instances, and provide a global point of access to them。
         * 确保一个类具有有限个实例,并提供一个全局访问点来访问他们。
         */
        @Test
        public void all() {
            final MultionLight l1 = MultionLight.get(Light.RED);
            final MultionLight l2 = MultionLight.get(Light.RED);
            assertEquals(l1, l2);
        }
    }
    
    enum Light {
        RED, GREEN, YELLOW;
    }
    
    @Data
    class MultionLight {
        private static final ConcurrentMap<Light, MultionLight> INSTANCES;
        private final Light light;
    
        private MultionLight(Light light) {
            this.light = light;
        }
    
        static {
            INSTANCES = Arrays.stream(Light.values()).
                    collect(Collectors.toConcurrentMap(val -> val, val -> new MultionLight(val)));
        }
    
        public static final MultionLight get(Light light) {
            return INSTANCES.get(light);
        }
    }
    
  • 相关阅读:
    总结面试常见题
    关于面试
    关于SQL经典题
    阶乘
    异常处理——捕获并抛出
    异常处理——异常越界
    异常处理——创建抛出
    输出异常
    抛出异常
    异常处理
  • 原文地址:https://www.cnblogs.com/zhuxudong/p/10216962.html
Copyright © 2011-2022 走看看