设计模式课程 设计模式精讲 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 单例设计模式-序列化破坏单例模式原理解析及解决方案