码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式课程 设计模式精讲 8-9 单例设计模式-容器模式

时间:2019-09-01 16:59:06      阅读:93      评论:0      收藏:0      [点我收藏+]

标签:初始   color   单例   key   私有   sys   java   pattern   stat   

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);
    }
}

 

设计模式课程 设计模式精讲 8-9 单例设计模式-容器模式

标签:初始   color   单例   key   私有   sys   java   pattern   stat   

原文地址:https://www.cnblogs.com/1446358788-qq/p/11442348.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!