定义:运用共享技术有效地支持大量细粒度的对象。
结构图:
示例代码:
public interface WebSite {
public void use();
}
public class ConcreteWebSite implements WebSite {
private String name = "";
@Override
public void use() {
// TODO Auto-generated method stub
System.out.println("网站分类: " + name);
}
public ConcreteWebSite(String name) {
this.name = name;
}
}
public class WebSiteFactory {
private Hashtable flyweights = new Hashtable();
public WebSite GetWebSiteCategory(String key) {
if (!flyweights.contains(key)) {
flyweights.put(key, new ConcreteWebSite(key));
}
return (WebSite)flyweights.get(key);
}
public int GetWebSiteCount() {
return flyweights.size();
}
}
public class Client {
public static void main(String[] args) {
WebSiteFactory f = new WebSiteFactory();
WebSite fx = f.GetWebSiteCategory("产品展示");
fx.use();
WebSite fy = f.GetWebSiteCategory("产品展示");
fy.use();
WebSite fz = f.GetWebSiteCategory("产品展示");
fz.use();
WebSite fm = f.GetWebSiteCategory("博客");
fm.use();
WebSite fn = f.GetWebSiteCategory("博客");
fm.use();
System.out.println("网站分类总数为" + f.GetWebSiteCount());
}
}
运行结果如下:
网站分类: 产品展示
网站分类: 产品展示
网站分类: 产品展示
网站分类: 博客
网站分类: 博客
网站分类总数为2