java设计模式——享元模式
来源:互联网 发布:富士通扫描仪软件 编辑:程序博客网 时间:2024/05/01 04:54
《大话设计模式》第二十六章
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;}@Overridepublic 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设计模式—享元模式
- java设计模式———享元模式
- Java设计模式之——享元模式
- java设计模式——享元模式
- JAVA设计模式——享元模式(Flyweight)
- java设计模式——享元模式
- JAVA设计模式(十)——享元模式
- Java设计模式——享元模式(Flyweight)
- Java设计模式——享元模式
- java设计模式——享元模式(Flyweight Pattern)
- Java设计模式之——享元模式
- Java设计模式11——享元模式
- Java设计模式——享元模式(Flyweight)
- Java设计模式——享元模式
- JAVA设计模式——享元模式
- JAVA设计模式(23) —享元(FlyWeight)模式
- 设计模式——享元模式
- 设计模式——享元模式
- java你所不知道的实用技巧
- 监视java虚拟机状态
- 数据库完善--历史记录问题解决
- 性能调优攻略
- 15款有趣的诺基亚概念手机回顾
- java设计模式——享元模式
- 通过virtualbox最小化安装centos 6.3后无法上网解决办法
- 使用shell函数实现Linux下操作自动化
- 用java执行shell命令
- 浅谈Linux磁盘存储管理续【逻辑卷管理(LVM)】
- 调查:2013年十大最热IT职业
- 利用Java批量修改文件后缀名
- oracle学习随笔
- 图像分割之(四)OpenCV的GrabCut函数使用和源码解读