设计模式——享元模式样例
来源:互联网 发布:联系打字的软件 编辑:程序博客网 时间:2024/06/06 02:58
Client.java:
package se;import java.util.ArrayList;import java.util.Iterator;import java.util.List;public class Client {private static FlyweightFactory factory ; public static void main(String[] args) { List list1 = new ArrayList(); factory = new FlyweightFactory(); MonsterKind list = factory.newfactory("寒冰射手"); list.setMonsterKind("a",list1); list = factory.newfactory("德玛西亚"); list.setMonsterKind("a",list1); list = factory.newfactory("众星之子"); list.setMonsterKind("a",list1); list = factory.newfactory("生化魔人"); list.setMonsterKind("a",list1); list = factory.newfactory("生化魔人"); list.setMonsterKind("a",list1); list = factory.newfactory("战争之影"); list.setMonsterKind("b",list1); list = factory.newfactory("德玛西亚"); list.setMonsterKind("b",list1); list = factory.newfactory("生化魔人"); list.setMonsterKind("b",list1); System.out.println("a中含有英雄:"); List list2 = list.findMonsterKind("a",list1); Iterator it1 = list2.iterator(); while(it1.hasNext()) { System.out.println(" "+it1.next()); } System.out.println("b中含有英雄:"); List list3 = list.findMonsterKind("b",list1); Iterator it2 = list3.iterator(); while(it2.hasNext()) { System.out.println(" "+it2.next()); } System.out.println("英雄类型共有:"+factory.getNumber()+"种"); System.out.println("英雄总数共有:8种"); }}
FlyweightFactory.java:
package se;import java.util.HashMap;import java.util.Map;public class FlyweightFactory { private Map nameList = new HashMap(); private static FlyweightFactory factory = new FlyweightFactory(); public FlyweightFactory(){} public MonsterKind newfactory(String name) { if(nameList.containsKey(name)) { return (MonsterKind)nameList.get(name); } else{ MonsterKind id = new MonsterKind(name); nameList.put(name,id); return id; } } public int getNumber() { return nameList.size(); }}
kind.java:
package se;import java.util.List;public interface kind { public void setMonsterKind(String person , List list); public List findMonsterKind(String person, List list);}
MonsterKind.java:
package se;import java.util.ArrayList;import java.util.Iterator;import java.util.List;public class MonsterKind implements kind{ private String name ; public MonsterKind(String name){ //内蕴状态 this.name = name ; } public void setMonsterKind(String person , List list) { list.add(person); list.add(name); } public List findMonsterKind(String person, List list) { List nameList = new ArrayList(); Iterator it = list.iterator(); while(it.hasNext()) { if(person.equals((String)it.next())) nameList.add(it.next()); } return nameList ; }}
0 0
- 设计模式——享元模式样例
- 设计模式——享元模式
- 设计模式——享元模式
- 【设计模式】——享元模式
- 设计模式——享元模式
- 设计模式——享元模式
- 设计模式——享元模式
- 设计模式——享元模式
- 设计模式——享元模式
- 设计模式——享元模式
- 设计模式——享元模式
- 设计模式——享元模式
- 设计模式——享元模式
- 设计模式——享元模式
- 设计模式——享元模式
- 设计模式——享元模式
- 设计模式——享元模式
- 设计模式——享元模式
- 258. Add Digits
- java多线程基础(五)
- 字符串和数组方法
- Objective-C中的NSArray和NSMutableArray
- django搭建个人博客05,文章详细页1
- 设计模式——享元模式样例
- R语言学习路线图
- 283. Move Zeroes
- more effective c++——Item M29 引用计数(三)带引用计数的基类的实现
- 剑指offer-面试题26-复杂链表的复制
- 反射工具类【ReflectionUtils】
- android 内存泄漏分析之二
- LeetCode 5. Longest Palindromic Substring(字符串)
- 设计模式——工厂模式样例