11.组合模式
组合模式主要应对的是当一个具体实现一个接口的类中,含有更多的该接口的实例的树形接口,当执行此接口的方法时怎样赋予其中的相同接口的方法实现
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();
}
}
本人倡导的讲解方式:代码示例[学以致用,不仅要知道理论,还要知道理论怎么付诸实践],
文字讲解[不仅知道要怎么用,还要知道是怎么回事],
画图讲解[有图有真相,用图的形式将代码嵌入到理论中,整体理解]

浙公网安备 33010602011771号