java设计模式——享元模式
2013-02-22 21:20
429 查看
《大话设计模式》第二十六章
运行
上面的关键代码是:
JDK中的Integer.valueOf是经典例子,其代码如下:
package ch26; public class User { private String name; public User(String name) { this.name = name; } public String getName() { return name; } }
package ch26; public abstract class Website { public abstract void use(User user); }
package ch26; public class ConcreteWebsite extends Website { private String name; public ConcreteWebsite(String name) { this.name = name; } @Override public void use(User user) { System.out.println("网站分类:" + name + ",用户:" + user.getName()); } }
package ch26; import java.util.HashMap; import java.util.Map; public class WebsiteFactory { private Map<String, Website> flyweights = new HashMap<String, Website>(); public Website getWebsiteCategory(String key) { if (!flyweights.containsKey(key)) { flyweights.put(key, new ConcreteWebsite(key)); } return flyweights.get(key); } public int getWebsiteCount() { return flyweights.size(); } }
package ch26; /** * 享元模式 * @author Administrator * */ public class Client { /** * @param args */ 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()); } }
运行
网站分类:产品展示,用户:小菜 网站分类:产品展示,用户:大鸟 网站分类:产品展示,用户:娇娇 网站分类:博客,用户:老顽童 网站分类:博客,用户:桃谷六仙 网站分类:博客,用户:南海鳄神 得到网站分类总数:2
上面的关键代码是:
public Website getWebsiteCategory(String key) { if (!flyweights.containsKey(key)) { flyweights.put(key, new ConcreteWebsite(key)); } return flyweights.get(key); }
JDK中的Integer.valueOf是经典例子,其代码如下:
public static Integer valueOf(int i) { final int offset = 128; if (i >= -128 && i <= 127) { // must cache return IntegerCache.cache[i + offset]; } return new Integer(i); }
相关文章推荐
- Java设计模式之结构型模式-享元模式(Flyweight)
- Java与设计模式(二十一)结构型--享元模式
- Java设计模式之蝇量模式(享元模式)
- java设计模式——结构型之享元模式
- Java设计模式二十二:享元模式(Flyweight)
- JAVA设计模式之享元模式
- JAVA设计模式之享元模式
- Java设计模式二十二:享元模式(Flyweight)
- Java设计模式_(结构型)_享元模式
- java设计模式之享元模式
- JAVA设计模式——享元模式
- JAVA设计模式(08):结构型-享元模式(Flyweight)
- java设计模式——享元模式(Flyweight Pattern)
- Java设计模式菜鸟系列(二十一)享元模式建模与实现
- java设计模式---享元模式
- Java设计模式之享元模式
- JAVA设计模式之享元模式
- Java设计模式(六)合成模式 享元模式
- JAVA 设计模式 享元模式
- 【java设计模式】享元模式