首页 > 学院 > 开发设计 > 正文

通过缓存实现多例模式

2019-11-06 08:14:08
字体:
来源:转载
供稿:网友

下面的实例是通过Map泛型来缓存实现三例

本文只是展示设计模式,对于实例的调度问题不做叙述。

简单的循环返回三例模式的实现‘

import java.util.HashMap;import java.util.Map;/** * 简单演示如何扩展单例模式,控制实例个数为三 * @author Administrator * */public class OneExtend {	/**	 * 定义一个缺省的key值的前缀	 */	PRivate final static String DEFAULT_PREKEY = "Cache";	/**	 * 缓存实例的容器	 */	private static Map<String,Object> map = new HashMap<String,Object>();	/**	 * 用来记录当前使用第几个实例	 */	private static int num =1;	/**	 * 定义控制实例的最大数目	 */	private final static int NUM_MAX =  3;	/**	 * 构造方法私有化	 */	private OneExtend(){	}	//获得实例OneExtend对象	public static OneExtend getInstance(){		String key = DEFAULT_PREKEY+num;		OneExtend instance = (OneExtend) map.get(key);		if(instance==null){			instance = new OneExtend();			map.put(key, instance);		}		num++;		if(num>NUM_MAX){			num = 1;		}		return instance;	}	/**	 * 主方法测试	 * @param args	 */	public static void main(String[] args) {		System.out.println(OneExtend.getInstance());		System.out.println(OneExtend.getInstance());		System.out.println(OneExtend.getInstance());		System.out.println(OneExtend.getInstance());		System.out.println(OneExtend.getInstance());		System.out.println(OneExtend.getInstance());	}}运行结果:

singleton.OneExtend@7852e922singleton.OneExtend@70dea4esingleton.OneExtend@33909752singleton.OneExtend@7852e922singleton.OneExtend@70dea4esingleton.OneExtend@33909752注意:这种设计模式同样是线程不安全的,对于如何处理,详细请参看下文

http://blog.csdn.net/QQ_31589695/article/details/60139070


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表