享元模式 在java源代码_享元模式(Flyweight)Java

定义:

享元模式:避免大量拥有相同内容的小类的开销(如耗费内存),使大家共享一个类(元类).

结构图:

0818b9ca8b590ca3270a3433284dd417.png

WebSite:

package ding.study.designpatterns.flyweight;

/**

* 网站抽象类

* @author daniel

* @email 576699909@qq.com

* @time 2016-5-30 上午10:50:31

*/

public abstract class WebSite {

public abstract void use();

}

WebSiteFactory

package ding.study.designpatterns.flyweight;

/**

* 网站实现类

* @author daniel

* @email 576699909@qq.com

* @time 2016-5-30 上午10:51:35

*/

public class WebSiteImpl extends WebSite{

//网站分类名称

private String name="";

/**

* 构造函数

* @param name

*/

public WebSiteImpl(String name){

this.name=name;

}

/**

* 显示名称

*/

@Override

public void use() {

System.out.println("网站分类:"+this.name);

}}

WebSiteImpl

package ding.study.designpatterns.flyweight;

import java.util.Hashtable;

/**

* 网站工厂

*

* @author daniel

* @email 576699909@qq.com

* @time 2016-5-30 上午10:52:25

*/

public class WebSiteFactory {

private Hashtable flyweights = new Hashtable();

/**

* 获得网站分类

* 这里可以有多个网站实现类

* @param key

* @return

*/

public WebSite getWebSiteCategory(String key) {

if (!flyweights.containsKey(key)) {

flyweights.put(key, new WebSiteImpl(key));

}

return (WebSite) flyweights.get(key);

}

/**

* 获得网站分类总数

*

* @return

*/

public int getWebSiteCount() {

return flyweights.size();

}

}

ZTestMain

package ding.study.designpatterns.flyweight;

/**

* 享元模式(Flyweight):运用共享技术有效地支持大量细粒度的对象。

*

* 避免大量拥有相同内容的小类的开销(如耗费内存),使大家共享一个类(元类).

输出结果

* @author daniel

* @email 576699909@qq.com

* @time 2016-5-30 上午10:53:34

*/

public class ZTestMain {

/**

* @author daniel

* @time 2016-5-30 上午10:53:24

* @param args

*/

public static void main(String[] args) {

WebSiteFactory f=new WebSiteFactory();

WebSite fx=f.getWebSiteCategory("科技类");

fx.use();

WebSite fx1=f.getWebSiteCategory("新闻类");

fx1.use();

WebSite fx2=f.getWebSiteCategory("娱乐类");

fx2.use();

WebSite fy=f.getWebSiteCategory("博客");

fy.use();

WebSite fz=f.getWebSiteCategory("博客");

fz.use();

System.out.println("网站分类总数为:"+f.getWebSiteCount());

}

}

输出结果:

0818b9ca8b590ca3270a3433284dd417.png

源代码:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值