首页 > 代码库 > 数据库学习设计模式--组合模式

数据库学习设计模式--组合模式

 

介绍:

         想必你已经了解了数据结构中的树,ok,组合模式对于你就是一会儿的功夫了。组合模式相对来说比较简单。看一下定义


 

  1. abstract class Component  
  2. {  
  3.     protected String name; //这个用来标示一下节点  
  4.     public Component(String name)  
  5.     {  
  6.         this.name = name;  
  7.     }  
  8.    
  9.     public abstract void add(Component c);//增加儿子节点  
  10.     public abstract void remove(Component c);//删除儿子节点  
  11. }  
  12.   
  13. class Leaf extends Component  
  14. {  
  15.     public Leaf(String name)  
  16.     {  
  17.        super(name);  
  18.     }  
  19.    
  20.     public  void add(Component c)  
  21.     {  
  22.        System.out.println("叶子节点不能增加子节点");  
  23.     }  
  24.    
  25.     public void remove(Component c)  
  26.     {  
  27.         System.out.println("叶子节点没有子节点,移除神马");  
  28.     }  
  29. }  
  30.   
  31. class Composite extends Component  
  32. {  
  33.    
  34.     ArrayList<Component> child;  
  35.    
  36.     public Composite(String name)  
  37.     {  
  38.         super(name);  
  39.         if (child == null)  
  40.         {  
  41.             child = new ArrayList<Component>();  
  42.         }  
  43.     }  
  44.    
  45.     public void add(Component c)  
  46.     {  
  47.         this.child.add(c);  
  48.     }  
  49.    
  50.     public void remove(Component c)  
  51.     {  
  52.         this.child.remove(c);  
  53.     }  
  54. }  
  55.   
  56. public class Client{  
  57.     public static void main(String[] args)  
  58.     {  
  59.         Component tree=new Composite("A");//根节点一般是composite节点,给根节点取名A  
  60.         Component leafB=new Leaf("B");//创建了一个叶子节点B  
  61.         tree.add(leafB);//根节点有一个叶子节点儿子  
  62.           
  63.         Component branchC=new Composite("C");//一个树枝节点C  
  64.         tree.add(branchC);//树枝节点C是根节点A的子节点  
  65.           
  66.         Component leafD = new Leaf("D");  
  67.         branchC.add(leafD);//树枝节点C有一个叶子子节点D  
  68.           
  69.         //树结构大致构造完毕  
  70.     }  
  71. }