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