设为首页 加入收藏

TOP

设计模式之享元模式——初学(二)
2015-07-26 13:14:18 来源: 作者: 【 】 浏览:35
Tags:设计模式 模式 初学
lic ConcreteWebSite(String name)
? ? {
? ? ? ? this.name = name;
? ? }
? ?
? ? @Override
? ? public void Use(User user)
? ? {
? ? ? ? System.out.println("网站分类:"+name+"用户名:"+user.getName());


? ? }


}


?


?


?


?


package com.zcr.flyweight2;


import java.util.Hashtable;


//网站工厂
public class WebsiteFactory
{
? ? private Hashtable flyweights = new Hashtable();
? ?
? ? //获得网站分类
? ? public WebSite GetWebSiteCategory(String key)
? ? {
? ? ? ? //判断是否存在这个对象,如果存在则直接返回,若不存在,则实例化它再返回
? ? ? ? if(!flyweights.contains(key))
? ? ? ? {
? ? ? ? ? ? flyweights.put(key, new ConcreteWebSite(key));
? ? ? ? }
? ? ? ? return flyweights.get(key);
? ? }
? ?
? ? //获取网站分类的总数
? ? public int GetWebSiteCount()
? ? {
? ? ? ? return flyweights.size();
? ? }
}


?


?


?


?


package com.zcr.flyweight2;


public class FlyweightTest
{
? ? public static void main(String[] args)
? ? {
? ? ? ? WebsiteFactory f = new WebsiteFactory();
? ? ? ?
? ? ? ? WebSite fx = f.GetWebSiteCategory("产品展示");
? ? ? ? fx.Use(new User("小菜"));
? ? ? ?
? ? ? ? WebSite fy = f.GetWebSiteCategory("产品展示");
? ? ? ? fy.Use(new User("大烟笼"));
? ? ? ?
? ? ? ? WebSite fz = f.GetWebSiteCategory("产品展示");
? ? ? ? fz.Use(new User("大菜"));
? ? ? ?
? ? ? ? WebSite fl = f.GetWebSiteCategory("博客");
? ? ? ? fl.Use(new User("老顽童"));
? ? ? ?
? ? ? ? WebSite fm = f.GetWebSiteCategory("博客");
? ? ? ? fm.Use(new User("肥菜"));
? ? ? ?
? ? ? ? WebSite fn = f.GetWebSiteCategory("博客");
? ? ? ? fn.Use(new User("小小斌"));
? ? ? ?
? ? ? ? System.out.println("网站分类总数为:" + f.GetWebSiteCount());
? ? }
}


结果:



首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇设计模式学习之职责链模式 下一篇设计模式之中介者模式

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: