多例模式

多例模式的特点
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;
	}
}

你可能感兴趣的:(模式)