組合模式

/**
 * 組合模式
 */
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();
}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章