多例模式_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 多例模式

多例模式

 2010/11/17 22:49:32  85977328  http://phl.javaeye.com  我要评论(0)
  • 摘要:多例模式的特点1)多例类可以有多个实例;2)必须自行创建;3)向外界提供自己的实例;有上限多例模式无上限多例模式有状态:MutableMultiton无状态:ImmutableMultiton多例模式使用的时候应该注意,不是提供一个对外的接口,然后无限的new,无限new的,那是静态工厂方法。多例模式侧重存在的对象,就不new,或者是拿新的对象替换掉他。进而提高性能,在并发的情况下,还要考虑同步问题。下面是一个示例代码。packageCreationalPattern.Multiton
  • 标签:多例模式
多例模式的特点
1)多例类可以有多个实例;
2)必须自行创建;
3)向外界提供自己的实例;

有上限多例模式
无上限多例模式

有状态: Mutable Multiton
无状态: Immutable Multiton

多例模式使用的时候应该注意,不是提供一个对外的接口,然后无限的new,无限new的,那是静态工厂方法。多例模式侧重存在的对象,就不new,或者是拿新的对象替换掉他。进而提高性能,在并发的情况下,还要考虑同步问题。下面是一个示例代码。

package CreationalPattern.Multiton;

import java.util.HashMap;
public class TestMultition {
	
	
	public static void main(String[] args){
		MyClass m1 = MyClass.getInstance("m1");
		m1.setName("phl");
		MyClass m2 = MyClass.getInstance("m2");
		MyClass m3 = MyClass.getInstance("m1");
		
		System.out.println(m1.getName());
		System.out.println(m2.getName());
		System.out.println(m3.getName());
	}
	
}

class MyClass{
	private static HashMap<String,MyClass> hm = new  HashMap<String,MyClass>();
	private String name ;
	private MyClass(){
	}
	
	private MyClass(String name){
		this.name = name;
	}
	
	//直接覆盖存在的类
	public static MyClass getInstance(String name){
		if(name != null && !"".equals(name)){
			hm.put(name, new MyClass(name));
		}
		return hm.get(name);
	}
	
	public void setName(String name){
		this.name = name;
	}
	
	public String getName(){
		return this.name;
	}
}
上一篇: ActiveMQ 中的消息游标(Message cursors) 下一篇: 没有下一篇了!
  • 相关文章
发表评论
用户名: 匿名