我的漫漫程序之旅

          專注于JavaWeb開發
          隨筆 - 39, 文章 - 310, 評論 - 411, 引用 - 0
          數據加載中……

          組合(Composite)模式--實踐

          組合(Composite)模式主要角色:
          1.Component角色
          2.Leaf角色
          3.Composite角色

          package com.pattern.composite;   
          /**  
           * 組件抽象角色  
           *  
           
          */
            
          public interface Component {   
                 
              
          public void run();   
            
          }
            
          package com.pattern.composite;   
          /**  
           * 葉子角色  
           *  
           
          */
            
          public class Leaf implements Component{   
                 
              
          public void run(){   
                  System.out.println(
          " run invoked");   
              }
             
            
          }
            


          package com.pattern.composite;   
            
          import java.util.ArrayList;   
          import java.util.List;   
          /**  
           * 組合角色  
           * 實現組件角色接口,并且添加,刪除的也是組件角色  
           *   
           * Composite本來可以再包含Leaf和Composite的。而 Leaf和Composite 又都屬于 Component,所以增加,刪除 的是Component  
           *   
           * 組合模式主要分為2種  
           *   
           * 1 透明式  
           
              添加Component對象的操作定義在Component角色中,這樣的話不僅Composite需要實現這些方法,Leaf也需要實現這些方法,  
              而這些方法對于Leaf來說沒有任何意義,不過將系統實現統一起來了,因此對用戶來說透明(用戶無需區分Composite還是Leaf)  
              ,因為這些角色中都具備這些方法。  
                
             2 安全式  
           
              添加Component對象的操作定義在Composite角色中,這樣的話Leaf就無需實現這些方法(因為Leaf本身根本不需要實現這些方法)  
           *  
           
          */
            
          public class Composite  implements Component{   
                 
              List
          <Component> list = new ArrayList<Component>();   
                 
              
          //添加   
              public void addComponent(Component component){   
                  list.add(component);   
              }
             
              
          //刪除   
              public void removeComponent(Component component){   
                  list.remove(component);   
              }
             
                 
              
          //get   
              public List<Component> getAll(){   
                  
          return list;   
              }
             
                 
              
          public void run(){   
                  
          for(Component component : list){   
                      component.run();   
                  }
             
              }
             
            
          }
            


          package com.pattern.composite;   
            
          public class Client {   
            
              
          public static void main(String[] args){   
                  Leaf leaf1 
          = new Leaf();   
                  Leaf leaf2 
          = new Leaf();   
                  Leaf leaf3 
          = new Leaf();   
                     
                  Composite composite 
          = new Composite();   
                     
                  composite.addComponent(leaf1);   
                  composite.addComponent(leaf2);   
                     
                  Composite composite1 
          = new Composite();   
                  composite1.addComponent(composite);   
                  composite1.addComponent(leaf3);   
                     
                  composite1.run();   
                     
              }
             


          posted on 2008-05-17 11:10 々上善若水々 閱讀(667) 評論(0)  編輯  收藏 所屬分類: 設計模式

          主站蜘蛛池模板: 新乐市| 巢湖市| 威海市| 梁河县| 遂宁市| 永新县| 潜江市| 柏乡县| 利津县| 都江堰市| 同心县| 商洛市| 清水县| 永和县| 湖北省| 北碚区| 新泰市| 海淀区| 周至县| 上林县| 枞阳县| 葫芦岛市| 疏勒县| 长寿区| 依安县| 宜章县| 通榆县| 汶川县| 平陆县| 西峡县| 吴堡县| 鄂托克前旗| 子长县| 高碑店市| 沙坪坝区| 施秉县| 澄城县| 威信县| 弥勒县| 达州市| 尉氏县|