设计模式——享元模式样例

来源:互联网 发布:联系打字的软件 编辑:程序博客网 时间: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
原创粉丝点击