<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 人在江湖 閱讀(665) 評論(0)  編輯  收藏 所屬分類: design pattern
    主站蜘蛛池模板: 又粗又黄又猛又爽大片免费| 亚洲色大成网站www尤物| 蜜臀91精品国产免费观看| 最近最新高清免费中文字幕| 亚洲AV蜜桃永久无码精品| 国产精品免费久久| 亚洲中文字幕无码亚洲成A人片| 亚洲人精品午夜射精日韩| 免费中文字幕在线观看| 国产精品视频永久免费播放| 中文字幕在线免费观看| 免费看一区二区三区四区| 一级毛片免费全部播放| 朝桐光亚洲专区在线中文字幕 | 亚洲AV无码之国产精品| 亚洲人成影院在线高清| 久久精品亚洲精品国产色婷| 亚洲精品无码AV人在线播放| 久久精品国产亚洲Aⅴ蜜臀色欲| 又粗又大又硬又爽的免费视频| 在线免费观看视频你懂的| 最新猫咪www免费人成| 一区二区3区免费视频| 香蕉视频免费在线| 老妇激情毛片免费| 在线精品自拍亚洲第一区| 久久人午夜亚洲精品无码区| 亚洲成aⅴ人片久青草影院按摩| 中文字幕亚洲精品无码| 日本亚洲成高清一区二区三区| 成人人免费夜夜视频观看| 国产香蕉九九久久精品免费| 中文字幕无码不卡免费视频| 国产精品无码免费播放| 日韩在线天堂免费观看| 国产精品无码一二区免费| 国产免费av一区二区三区| 四虎永久在线精品免费影视| 日本免费v片一二三区| 四虎永久免费影院| 亚洲日韩在线第一页|