package Composite;
import java.util.ArrayList;
import java.util.List;
public interface AbstractFile {
void Killvirus();
}
class ImageFile implements AbstractFile {
private String name;
public ImageFile(String name) {
this.name = name;
}
public void Killvirus() {
System.out.println("图像文件" + name + "进行查杀");
}
}
class TextFile implements AbstractFile {
private String name;
public TextFile(String name) {
this.name = name;
}
public void Killvirus() {
System.out.println("文本文件" + name + "进行查杀");
}
}
class VideoFile implements AbstractFile {
private String name;
public VideoFile(String name) {
this.name = name;
}
public void Killvirus() {
System.out.println("视频文件" + name + "进行查杀");
}
}
class Folder implements AbstractFile {
private String name;
//定义容器,存储本容器下的子节点
private List<AbstractFile> list = new ArrayList<AbstractFile>();
public Folder(String name) {
this.name = name;
}
public void add(AbstractFile f) {
list.add(f);
System.out.println("添加文件"+f);
}
public void remove(AbstractFile f) {
list.remove(f);
System.out.println("删除文件"+f);
}
public AbstractFile getChild(int index) {
return list.get(index);
}
public void Killvirus() {
System.out.println("文件夹"+name+"进行查杀");
for(AbstractFile file :list){
file.Killvirus();
}
}
}
package Composite;
public class Client {
public static void main(String[] args) {
AbstractFile f1, f2, f3, f4, f5;
f1 = new Folder("我的收藏");
f2 = new ImageFile("头像");
f3 = new TextFile("小说");
((Folder) f1).add(f2);
((Folder) f1).add(f3);
f2.Killvirus();
}
}
运行结果: