java 之 享元模式(大话设计模式)

笔者很少用到享元模式,在笔者看来,享元模式解决内存问题用的应该会比较多,java中我们常用的String就是利用享元模式的思想来解决内存问题的

先看下类图

大话设计模式-类图

在看下笔者的demo

/**
 * 网站接口
 */
public interface IWeb {

    public void sayMyself();
}
/**
 * 网站实现类
 */
public class CurrentWeb implements IWeb{

    private String name;

    public CurrentWeb(String name) {
        super();
        this.name = name;
    }

    @Override
    public void sayMyself() {
        System.out.println(name);
    }
}
/**
 * 网站工厂
 */
public class WebFactory {

    private Map<String, IWeb> webMap = new HashMap<>();

    public IWeb getWeb(String key) {
        if (!webMap.containsKey(key)) {
            webMap.put(key, new CurrentWeb(key));
        }
        return webMap.get(key);
    }

    public int getWebCount() {
        return webMap.size();
    }
}
/**
 * 客户端
 */
public class Test {

    public static void main(String[] args) {
        WebFactory factory = new WebFactory();
        IWeb web = factory.getWeb("博客园");
        web.sayMyself();
        IWeb web1 = factory.getWeb("博客园");
        web1.sayMyself();
        IWeb web2 = factory.getWeb("空间");
        web2.sayMyself();

        System.out.println(web == web1);

        System.out.println(factory.getWebCount());
    }
}

 

输出结果为

博客园
博客园
空间
true
2

 

享元模式笔者使用的比较少,可能理解的不够深入。希望demo能够帮助读者。

posted @ 2017-12-22 16:16  红尾巴的猪  阅读(240)  评论(0编辑  收藏  举报