标签:int str ted 递归调用 lis generate 判断 string oid
组合模式主要应对的是当一个具体实现一个接口的类中,含有更多的该接口的实例的树形接口,当执行此接口的方法时怎样赋予其中的相同接口的方法实现
1.接口
public interface IBox { public void process(); }
2.实现接口的类
1)单一的类
public class SingleBox implements IBox { public void process() { // TODO Auto-generated method stub System.out.println("single box process"); } }
2.具有树形实现接口的类
public class ContainerBox implements IBox { List<IBox> list=new ArrayList<IBox>(); public ContainerBox(List<IBox> list){ this.list=list; } public void process() { // TODO Auto-generated method stub System.out.println("containerBox process");
//组合模式的关键,递归调用 if (null!=list && list.size()>0) { for(IBox item : list){ item.process(); } } } }
3.应用
public class App { public static void main(String[] args) { SingleBox box=new SingleBox(); List<IBox> list=new ArrayList<IBox>(); list.add(box); ContainerBox containerBox=new ContainerBox(list); //IBox box=Factory.getBox(); // 对客户程序来说,不需判断有无树形结构 containerBox.process(); } }
标签:int str ted 递归调用 lis generate 判断 string oid
原文地址:http://www.cnblogs.com/Niel-3/p/7469228.html