我的漫漫程序之旅

          專注于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 々上善若水々 閱讀(666) 評論(0)  編輯  收藏 所屬分類: 設計模式

          主站蜘蛛池模板: 江西省| 东台市| 天津市| 社旗县| 黔西县| 保定市| 会宁县| 郯城县| 萨嘎县| 登封市| 年辖:市辖区| 泌阳县| 雅江县| 岳池县| 叶城县| 固安县| 静安区| 太仓市| 明星| 凤山市| 榆林市| 平罗县| 绿春县| 五河县| 图片| 全州县| 洞头县| 定边县| 绍兴县| 达尔| 平原县| 西吉县| 左权县| 卢氏县| 迭部县| 江源县| 上栗县| 德化县| 滁州市| 兰溪市| 社旗县|