11.组合模式

Posted Kyhoon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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();
	}
}

  

 

以上是关于11.组合模式的主要内容,如果未能解决你的问题,请参考以下文章

itertools 排列组合

为 memcached 和 Rails 组合片段和对象缓存的最佳方式

Relay.js 没有正确解析组合片段

如何像浏览器一样在 Java 中组合 URL 片段?

JavaScript 代码片段

如何组合绑定片段而不将它们包装在 XML 文字中