* 組合模式
*/
public interface AbstractFile {
void killFile();
}
class ImageFile implements AbstractFile{
private String name;
public ImageFile(String name) {
this.name = name;
}
public void killFile() {
System.out.println("處理"+name+"圖像文件");
}
}
class TextFile implements AbstractFile{
private String name;
public TextFile(String name) {
this.name = name;
}
public void killFile() {
System.out.println("處理"+name+"文本文件");
}
}
class VideoFile implements AbstractFile{
private String name;
public VideoFile(String name) {
this.name = name;
}
public void killFile() {
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 file) {
list.add(file);
}
public void remove(AbstractFile file) {
list.remove(file);
}
public AbstractFile getChild(int index) {
return list.get(index);
}
@Override
public void killFile() {
for(AbstractFile file : list) {
file.killFile();
}
}
}
測試類
public class Text {
public static void main(String[] args) {
AbstractFile f2,f3,f4,f5;
Folder f1 = new Folder("我的收藏");
f2 = new ImageFile("老大的頭像");
f3 = new TextFile("Hello.txt");
f1.add(f2);
f1.add(f3);
f1.killFile();
}
}