组合模式

1组合模式的定义

将对象组合成属性结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性

2.组合模式的UML


3.代码实现

public abstract Component{
   public void someOperation();
   public void addChild(Component child){
           throw new Exception("叶子不能增加子节点")
   }
   public void removeChild(child Component){
      throw new Exception("叶子无子节点不能删除");
   }
   public Component getChildren(int index){
       throw new Exception("叶子无子借点") 
   }

}


public class Leaf extends Component{
    public void someOperation(){
        System.out.println("叶子")
    }
}


public class Composite extends Component{
   private List<Component> childs=null;

   public void someOperation(){
     System.out.println("组合");
  }


 public void addChild(Component child){
       if(childs==null){
            childs=new ArrayList<Component>();
       }
       childs.add(child);
   }
  
    public void removeChild(Component child){
      if(childs!=null){
            childs.remove(child)
       }
    } 
  

   public Component getChildren(int index){
       if(childs==null || index<0 || childs.size()<=index){
            return null;
        }
        return childs.get(index);
 
   }
}


public class Client{
   public static void main(String[] args){
           Component root=new Composite();
           Component c1=new Composite();
           Component c2=new Composite();
           Component leaf1=new Leaf();
	   Component leaf2=new Leaf();
	   Component leaf3=new Leaf();
           root.addChild(c1);
           root.addChild(c2);
           root.addChild(leaf1);
           c1.addChild(leaf2);
           c2.addChild(leaf3);
           Component o=root.getChildren(1);
           o.someOperation();

       
   }
}

4.组合的本质: 统一叶子对象和组合对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值