package org.jcommons.common; import java.util.*; import java.io.Serializable; /** * The MapFactory is a mechanism for specifying what kind of map is to be used * by some object. For example, if you want a Counter which is backed by an * IdentityHashMap instead of the defaul HashMap, you can pass in an * IdentityHashMapFactory. * * from berkerly */ public abstract class MapFactory<K, V> implements Serializable { public static class HashMapFactory<K, V> extends MapFactory<K, V> { private static final long serialVersionUID = 1L; public Map<K, V> buildMap() { return new HashMap<K, V>(); } } public static class IdentityHashMapFactory<K, V> extends MapFactory<K, V> { private static final long serialVersionUID = 1L; public Map<K, V> buildMap() { return new IdentityHashMap<K, V>(); } } public static class TreeMapFactory<K, V> extends MapFactory<K, V> { private static final long serialVersionUID = 1L; public Map<K, V> buildMap() { return new TreeMap<K, V>(); } } public static class WeakHashMapFactory<K, V> extends MapFactory<K, V> { private static final long serialVersionUID = 1L; public Map<K, V> buildMap() { return new WeakHashMap<K, V>(); } } public abstract Map<K, V> buildMap(); }