码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-12-22 16:37:41      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:imp   ==   cto   ace   技术   技术分享   java   []   rri   

笔者很少用到享元模式,在笔者看来,享元模式解决内存问题用的应该会比较多,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能够帮助读者。

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

标签:imp   ==   cto   ace   技术   技术分享   java   []   rri   

原文地址:http://www.cnblogs.com/zhuxiansheng/p/8086507.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!