<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    人在江湖

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      82 Posts :: 10 Stories :: 169 Comments :: 0 Trackbacks

    單純fly weight

       1: //抽象享元角色
       2: abstract public class Flyweight
       3: {
       4:     abstract public void operation(String state);
       5: }
       6:  

     

       1: //具體享元(ConcreteFlyweight)角色
       2: public class ConcreteFlyweight extends Flyweight
       3: {
       4:     private Character intrinsicState = null;
       5:  
       6:  public ConcreteFlyweight(Character state)
       7:  {
       8:   this.intrinsicState = state;
       9:  }
      10:  
      11:  public void operation(String state)
      12:  {
      13:   System.out.print( "\nIntrinsic State = " + intrinsicState +
      14:             ", Extrinsic State = " + state);
      15:  }
      16: }
      17:  

     

       1: //享元工廠(FlyweightFactory)角色
       2: import java.util.Map;
       3: import java.util.HashMap;
       4: import java.util.Iterator;
       5:  
       6: public class FlyweightFactory
       7: {
       8:     private HashMap flies = new HashMap();
       9:     /**
      10:      * @link aggregation
      11:      * @directed
      12:      * @clientRole Flyweights
      13:      */
      14:     private Flyweight lnkFlyweight;
      15:  
      16:  public FlyweightFactory(){}
      17:  
      18:  public synchronized Flyweight factory(Character state)
      19:  {
      20:   if ( flies.containsKey( state ) )
      21:         {
      22:             return (Flyweight) flies.get( state );
      23:         }
      24:         else
      25:         {
      26:    Flyweight fly = new ConcreteFlyweight( state );
      27:             flies.put( state , fly);
      28:             return fly;
      29:         }
      30:  }
      31:  
      32:  public void checkFlyweight()
      33:  {
      34:   Flyweight fly ;
      35:         int i = 0;
      36:  
      37:         System.out.println("\n==========checkFlyweight()=============");
      38:   for ( Iterator it = flies.entrySet().iterator() ; it.hasNext() ;  )
      39:         {
      40:    Map.Entry e = (Map.Entry) it.next();
      41:             System.out.println("Item " + (++i) + " : " + e.getKey());
      42:         }
      43:         System.out.println("==========checkFlyweight()=============");
      44:  }
      45:  
      46: }
      47:  

     

       1:  
       2: //客戶端(Client)角色
       3: public class Client
       4: {
       5:     private static FlyweightFactory factory;
       6:  
       7:     static public void main(String[] args)
       8:  {
       9:   factory = new FlyweightFactory();
      10:  
      11:   Flyweight fly = factory.factory(new Character('a'));
      12:   fly.operation("First Call");
      13:   
      14:   fly = factory.factory(new Character('b'));
      15:   fly.operation("Second Call");
      16:   
      17:   fly = factory.factory(new Character('a'));
      18:   fly.operation("Third Call");
      19:   
      20:   // intrinsic Flyweight
      21:   factory.checkFlyweight();
      22:  }
      23: }
      24:  

    復合fly weight

       1: //抽象享元角色
       2: abstract public class Flyweight
       3: {
       4:     abstract public void operation(String state);
       5: }

       1: //具體享元(ConcreteFlyweight)角色
       2: public class ConcreteFlyweight extends Flyweight
       3: {
       4:     private Character intrinsicState = null;
       5:  
       6:  public ConcreteFlyweight(Character state)
       7:  {
       8:   this.intrinsicState = state;
       9:  }
      10:  
      11:  public void operation(String state)
      12:  {
      13:   System.out.print( "\nInternal State = " +
      14:             intrinsicState + " Extrinsic State = " + state );
      15:  }
      16: }
      17:  

       1: //復合享元(UnsharableFlyweight)角色
       2: import java.util.Map;
       3: import java.util.HashMap;
       4: import java.util.Iterator;
       5:  
       6: public class ConcreteCompositeFlyweight extends Flyweight
       7: {
       8:     private HashMap flies = new HashMap(10);
       9:  
      10:     /**
      11:      * @link aggregation
      12:      * @directed
      13:      * @clientRole Composite
      14:      */
      15:     private Flyweight flyweight;
      16:  
      17:  public ConcreteCompositeFlyweight()
      18:  {
      19:  }
      20:  
      21:  public void add(Character key, Flyweight fly)
      22:  {
      23:   flies.put(key, fly);
      24:  }
      25:  
      26:  public void operation(String extrinsicState)
      27:  {
      28:         Flyweight fly =  null;
      29:  
      30:   for ( Iterator it = flies.entrySet().iterator() ; it.hasNext() ;  )
      31:         {
      32:    Map.Entry e = (Map.Entry) it.next();
      33:             fly = (Flyweight) e.getValue();
      34:  
      35:             fly.operation(extrinsicState);
      36:         }
      37:  }
      38: }
      39:  
       1: //享元工廠(FlyweightFactory)角色
       2: import java.util.Map;
       3: import java.util.HashMap;
       4: import java.util.Iterator;
       5:  
       6: public class FlyweightFactory
       7: {
       8:     private HashMap flies = new HashMap();
       9:     /**
      10:      * @link aggregation
      11:      * @directed
      12:      * @clientRole Flyweights
      13:      */
      14:     private Flyweight lnkFlyweight;
      15:  
      16:  public FlyweightFactory(){}
      17:  
      18:  public Flyweight factory(String compositeState)
      19:  {
      20:   ConcreteCompositeFlyweight compositeFly = new ConcreteCompositeFlyweight();
      21:   
      22:   int length = compositeState.length();
      23:         Character state = null;
      24:  
      25:   for(int i = 0; i < length; i++)
      26:   {
      27:    state = new Character(compositeState.charAt(i) );
      28:             System.out.println("factory(" + state + ")");
      29:    compositeFly.add( state, this.factory( state) );
      30:   }
      31:   return compositeFly;
      32:     }
      33:  
      34:  public Flyweight factory(Character state)
      35:  {
      36:   if ( flies.containsKey( state ) )
      37:         {
      38:             return (Flyweight) flies.get( state );
      39:         }
      40:         else
      41:         {
      42:    Flyweight fly = new ConcreteFlyweight( state );
      43:             flies.put( state , fly);
      44:             return fly;
      45:         }
      46:  }
      47:  
      48:  public void checkFlyweight()
      49:  {
      50:   Flyweight fly ;
      51:         int i = 0 ;
      52:  
      53:         System.out.println("\n==========checkFlyweight()=============");
      54:   for ( Iterator it = flies.entrySet().iterator() ; it.hasNext() ;  )
      55:         {
      56:    Map.Entry e = (Map.Entry) it.next();
      57:             System.out.println( "Item " + (++i) + " : " + e.getKey());
      58:         }
      59:         System.out.println("\n==========checkFlyweight()=============");
      60:  }
      61:  
      62: }
      63:  

       1: //客戶端(Client)角色
       2: public class Client
       3: {
       4:     private static FlyweightFactory factory;
       5:  
       6:     public static void main(String[] args)
       7:  {
       8:   factory = new FlyweightFactory();
       9:  
      10:   Flyweight fly;
      11: /*        fly = factory.factory(new Character('a'));
      12:   fly.operation();
      13:   
      14:   fly = factory.factory(new Character('b'));
      15:   fly.operation();
      16:   
      17:   fly = factory.factory(new Character('a'));
      18:   fly.operation();
      19: */
      20:         fly = factory.factory("abc");
      21:         fly.operation("Composite Call");
      22:   
      23: // intrinsic Flyweight
      24:   factory.checkFlyweight();
      25:  }
      26: }
      27:  
      28:  
      29:  
      30:  
    posted on 2011-02-12 23:57 人在江湖 閱讀(676) 評論(0)  編輯  收藏 所屬分類: design pattern
    主站蜘蛛池模板: 亚洲成人在线免费观看| 最近免费mv在线电影| 日韩精品亚洲专区在线影视| 亚洲熟妇自偷自拍另欧美| 亚洲第一区二区快射影院| 成年人视频免费在线观看| 亚洲成AV人片久久| 久久久久免费看成人影片| 精品亚洲麻豆1区2区3区| 69视频在线观看免费| 亚洲精品在线播放| 手机永久免费的AV在线电影网| 国产在线19禁免费观看| 无码一区二区三区亚洲人妻 | 久久久高清日本道免费观看| 亚洲无码在线播放| 99久久久国产精品免费牛牛| 亚洲午夜国产精品无卡| 免费网站看v片在线香蕉| 国产成人亚洲综合在线| 97人妻无码一区二区精品免费| 亚洲网红精品大秀在线观看| 美女视频黄的全免费视频| 久久久久噜噜噜亚洲熟女综合| 久久久久亚洲国产| 国产免费人视频在线观看免费| 一级午夜免费视频| 亚洲专区先锋影音| 欧美男同gv免费网站观看| 久久丫精品国产亚洲av| 大地资源二在线观看免费高清 | 全黄A免费一级毛片| 亚洲成av人在线视| 无码人妻精品一二三区免费| 男男gvh肉在线观看免费| 久久久综合亚洲色一区二区三区| 性做久久久久久久免费看| 免费视频成人国产精品网站| 亚洲精品在线观看视频| 国产免费爽爽视频免费可以看| 日韩免费高清播放器|