package com.kinsey.woo.composite;
public interface AbstractFile {
public void killVirus();
}
package com.kinsey.woo.composite;
public class ImageFile implements AbstractFile {
private String name;
@Override
public void killVirus() {
System.out.println(name + "文件正在被查杀...");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public ImageFile(String name) {
super();
this.name = name;
}
}
package com.kinsey.woo.composite;
public class VideoFile implements AbstractFile {
private String name;
public VideoFile(String name) {
super();
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public void killVirus() {
System.out.println(name + "文件正在被查杀...");
}
}
package com.kinsey.woo.composite;
import java.util.ArrayList;
import java.util.List;
public class Folder implements AbstractFile {
private String name="default";
private List<AbstractFile> fileList;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<AbstractFile> getFileList() {
return fileList;
}
public void setFileList(List<AbstractFile> fileList) {
this.fileList = fileList;
}
public void addFile(AbstractFile file){
fileList.add(file);
}
public AbstractFile getFile(int index){
return fileList.get(index);
}
public Folder() {
super();
fileList = new ArrayList<AbstractFile>();
}
@Override
public void killVirus() {
for(AbstractFile file:fileList){
file.killVirus();
}
}
}
package com.kinsey.woo.composite;
public class Client {
public static void main(String[] args) {
AbstractFile f1,f2;
Folder f11 = new Folder();
f1 = new ImageFile("julia.jpg");
f2 = new VideoFile("dnf.mp4");
f11.addFile(f1);
f11.addFile(f2);
f11.killVirus();
f11.getFile(0).killVirus();
System.out.println("----------");
Folder f12 = new Folder();
f12.addFile(f11);
f12.addFile(f2);
f12.killVirus();
}
}