1. 程式人生 > >Java設計模式之組合模式

Java設計模式之組合模式

class Folder implements AbstractFile{
	private String name;
	private List<AbstractFile> list = new ArrayList<AbstractFile>();
	
	public Folder(String name) {
		super();
		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 killVirus() {
		System.out.println("---資料夾:" + name + ",進行查殺");
		for(AbstractFile file: list){
			file.killVirus();
		}
	}
	
}
可以看到這裡存在一個天然的遞迴,資料夾中可以包含檔案和資料夾,那麼對資料夾進行查殺,會對裡面的檔案進行查殺,並且對子資料夾裡面的檔案進行查殺。