组合模式核心:把部分和整体的关系用树形结构来表示,从而使客户端可以使用统一的方式处理部分对象和整体对象。
组合模式核心:抽象构件角色:定义了叶子和容器构件的共同点。
叶子构件角色:无子节点。
容器构建角色:有容器特征,可以包含子节点。
package com.dasenlin.cn;
import java.util.ArrayList;
import java.util.List;
/**
* 抽象的文件
* @author Administrator
*
*/
public interface AbstructFile {
void killVirus();//杀毒
}
/**
* 叶子模式
* @author Administrator
*
*/
class InagesFile implements AbstructFile{
private String name;
public InagesFile(String name) {
super();
this.name = name;
}
@Override
public void killVirus() {
System.out.println("图像文件"+ name);
}
}
/**
* 组合模式
* @author Administrator
*
*/
class Folder implements AbstructFile{
private String name;
private List <AbstructFile> list = new ArrayList<AbstructFile>();
public Folder(String name) {
super();
this.name = name;
}
public void add(AbstructFile file){
list.add(file);
}
public void remove(AbstructFile file){
list.remove(file);
}
public AbstructFile getChild(int index){
return list.get(index);
}
@Override
public void killVirus() {
System.out.println("文件名:"+name+"正在查杀");
for(AbstructFile file:list){
file.killVirus();
}
}
}
测试
package com.dasenlin.cn;
public class Client {
/**
* @param args
*/
public static void main(String[] args) {
AbstructFile f2;
Folder f1 = new Folder("我的手长");
f2 = new InagesFile("大头贴");
f1.add(f2);
f1.killVirus();
}
}