应用Enum实现singleton

这几天看书,发现了一个用Enum实现singleton的例子,据作者称,此种方法是实现singleton最好的。
但是作者给出的例子比较笼统,网上也没有很好的例子。。
那位大哥比较明白的给个完整的例子呗?
谢了!!

实际上就是一个线程安全的对象容器.

你可以不用 createObject(Key key) 方法, 你可以用addItem(Key key, Object object) 将对象从外部传进来再保存起来. 以后每次get 都是使用key来查找这个object对象.

[code="html"]  三. 用注册器机制来创建 Singleton 首先用集合中的Hashtable 和Enumeration来实现addItem(Object key, Object value),getItem(Object key), ,removeItem(Object key)等方法实现一个管理器,将key和value一一关联起来,客户程序员创建实例前首先用addItem方法进行注册,再用getItem方法获取实例.Hashtable中的key是唯一的,从而保证创建的实例是唯一的,具体实现限于篇幅不再细说,在Prototype模型的应用一文中我将会给出一个实现注册器的代码.用注册器机制来创建 Singleton模式的好处是易于管理,可以同时控制多个不同类型的Singleton 实例.
[/code]

你说的是上面这段话吗?

[code="java"]public class Factory {
private static final Hashtable buffers = new Hashtable();

public static Object getItem(Key key) {
    Object value = buffers.get(key);
    if (value != null) {
        return value;

    } else {
        synchronized (Factory.class) {
            value = createObject(key);
            buffers.put(key, value);
            return value;
        }
    }
}

private static Object createObject(Key key) {
    return new Object();
}

}

enum Key {
A, B
}
[/code]