设计模式

单例模式

2015-03-21  本文已影响126人  lguipeng
UML类图

单例模式说的是该类只有一个实例,实现的关键是将该类的构造方法私有化,提供一个静态获取该实例

确保某个类有且只有一个对象的场景,例如创建一个对象需要消耗的资源过多,如要访问 IO 和数据库等资源。

等到调用时才生出对象,故称为懒汉,实现代码如下:

public class Singleton {

    private static Singleton singleton = null;

    private Singleton() {
    }
    public static Singleton getInstance() {
        if (singleton == null) {
            synchronized (Singleton.class) {
                if (singleton == null) {
                    singleton = new Singleton();
                }
            }
        }
        return singleton ;
    }
}

注册到容器, 根据key获取对象.一般都会有多种相同属性类型的对象会注册 到一个map中,实现代码如下:

public class Singleton {
    private static Map<string singleton=""> objMap = new HashMap<string singleton="">();
    /**
     * 注册对象到map中
     * @param key
     * @param instance
     */
    public static void registerService(String key, Singleton instance) {
        if (!objMap.containsKey(key) ) {
            objMap.put(key, instance) ;
        }
    }

    /**
     * 根据key获取对象
     * @param key
     * @return
     */
    public static Singleton getService(String key) {
        return objMap.get(key) ;
    }
}
上一篇 下一篇

猜你喜欢

热点阅读