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

Posted 1446358788-qq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式课程 设计模式精讲 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);
    

 

以上是关于设计模式课程 设计模式精讲 8-9 单例设计模式-容器模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式课程 设计模式精讲 8-6 单例设计模式-序列化破坏单例模式原理解析及解决方案

设计模式课程 设计模式精讲 8-5 单例设计模式-饿汉式

设计模式课程 设计模式精讲 8-2 单例设计模式-懒汉式及多线程Debug实战

设计模式单例模式精讲(上)

单例模式单例模式精讲(上)

单例模式(万字长文精讲)