黑马程序员技术交流社区

标题: 享元模式和单例模式的区别 [打印本页]

作者: L.sam    时间: 2014-6-26 22:18
标题: 享元模式和单例模式的区别
今天看7K视频时,发现了一个享元模式,先以为是单例模式的另外一个名称,然后我发现我错误了,我百度了一下,下面是一个网友的回答:

享元模式可以理解成一组共享的对象集合,下面就是一个简单的享元设计模式(甚至可以说是工厂模式了,呵呵,工厂模式目的是将具体创建对象的过程由工厂方法提供,用户只需要知道抽象类型即可。但这个例子就不要纠结成工厂模式了)
private Map<String, Object> map = new HashMap<String, Object>
public Object get(String key) {
    if(map.containsKey(key)) {
        return map.get(key);
    }
    Object obj = new Object();
    map.put(key, obj);
    return obj;
}

单例模式见下
public class S {
    private static S s = new S();
    private S() {
    }

    public static S getInstance() {
        return s;
    }
}

从上面我们享元设计模式是一个类有很多对象,而单例是一个类仅一个对象;享元模式是为了节约内存空间,提升程序性能(避免大量的new操作);而单例模式则主要是出于共享状态的目的




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2