zoukankan      html  css  js  c++  java
  • 设计模式课程 设计模式精讲 8-9 单例设计模式-容器单例

    1    课程讲解

    1.1  应用场景

    2    代码演练

    1.1  容器单例

    1    课程讲解
    1.1  应用场景

    应用于在程序初始化的时候把多个单例对象放入到singletonMap中,使用的时候直接通过key获取对象。可以应用在懒汉模式中,不适用于饿汉模式(饿汉模式由于每次都要重新初始化会出现多线程安全问题)

    使用hashtable会线程安全,但是由于其同步锁,会影响性能。

    2    代码演练
    1.1  容器单例

    test类:

    package com.geely.design.pattern.creational.singleton;
    
    public class Test2 {
    
    
        public static void main(String [] args){
            ContainerSingleton.putInstance("key",new Object());
            Object containerSingleton = ContainerSingleton.getInstance("key");
            System.out.println(containerSingleton.getClass().getName());
        }
    }

    容器单例实体类:

    package com.geely.design.pattern.creational.singleton;
    
    import java.util.HashMap;
    import java.util.Map;
    
    public class ContainerSingleton {
        /**
         * 私有构造器,防止外部类实例化该类
         */
        private ContainerSingleton(){
    
        }
    
        private static Map<String,Object> singletonMap = new HashMap<String,Object>();
    
        /**
         * map赋值,赋值单例对象
         * @param key
         * @param instance
         */
        public static void putInstance(String key,Object instance){
            if(!"".equals(key)&&instance != null){
                if(!singletonMap.containsKey(key)){
                    singletonMap.put(key, instance);
                }
            }
        }
    
        /**
         * 留着口子外部调用
         * @return
         */
        public static Object getInstance(String key){
           return singletonMap.get(key);
        }
    }
  • 相关阅读:
    camp训练day2
    LCA板子题
    牛客多校第一场
    P1063 能量项链 区间DP
    64. Minimum Path Sum
    46. Permutations
    216. Combination Sum III
    62. Unique Paths
    53. Maximum Subarray
    22. Generate Parentheses
  • 原文地址:https://www.cnblogs.com/1446358788-qq/p/11442348.html
Copyright © 2011-2022 走看看