一、享元模式介绍
二、享元模式使用
2.1 示例关系:

2.2 代码实现:
class User {
private String name;
public User(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
abstract class WebSite {
public abstract void use(User user);
}
class ConcreteWebSite extends WebSite {
private String type;
public ConcreteWebSite(String type) {
this.type = type;
}
@Override
public void use(User user) {
System.out.println("网站发布形式是 :" + this.type +
",用户" + user.getName() + "正在使用网站...");
}
}
class WebSiteFactory {
private Map<String, ConcreteWebSite> pool = new HashMap<>(8);
public WebSite getWebSiteCategory(String type) {
if (!pool.containsKey(type)) {
pool.put(type, new ConcreteWebSite(type));
}
return pool.get(type);
}
public int getWebSiteCount() {
return this.pool.size();
}
}
public class Client {
public static void main(String[] args) {
WebSiteFactory factory = new WebSiteFactory();
factory.getWebSiteCategory("微博").use(new User("tom"));
factory.getWebSiteCategory("微博").use(new User("jack"));
factory.getWebSiteCategory("知乎").use(new User("lucas"));
factory.getWebSiteCategory("微信公众号").use(new User("jan"));
System.out.println("当前网站分类共有" + factory.getWebSiteCount() + "种。");
}
}
三、享元模式总结