组合模式
Entry
public abstract class Entry {
public abstract String getName(Entry file);
public abstract int getSize(Entry file);
public abstract void printList();
public abstract void add(Entry file);
}
Directory
import java.util.ArrayList;
public class Directory extends Entry{
private ArrayList<Entry> filelist=new ArrayList<Entry>();
private String name;
public Directory(String name) {
this.name=name;
}
@Override
public String getName(Entry file) {
return name;
}
@Override
public int getSize(Entry file) {
return 0;
}
@Override
public void printList() {
System.out.println("****对文件夹 "+name+"正被读取");
for(Object obj:filelist){
((Entry)obj).printList();
}
}
@Override
public void add(Entry file) {
filelist.add(file);
}
}
File
public class File extends Entry{
private String name;
private int size;
public File(String name,int size)
{
this.name = name;
this.size = size;
}
@Override
public String getName(Entry file) {
return name;
}
@Override
public int getSize(Entry file) {
return size;
}
@Override
public void printList() {
System.out.println("文件名: "+name+" 文件大小:"+size);
}
@Override
public void add(Entry file) {
System.out.println("对不起,不支持该方法");
}
}
Main
public class Main {
public static void main(String[] args) {
Entry file1,file2,file3,file4,file5,directory1,directory2,directory3,directory4;
directory1=new Directory("总资料");
directory2=new Directory("图像文件");
directory3 = new Directory("文本文件");
directory4 = new Directory("视频文件");
file1=new File("壁纸.jpg",110);
file2=new File("图文.jif",300);
file3=new File("网文.txt",90);
file4=new File("实验报告.doc",111);
file5=new File("电影.rmvb",1000);
directory2.add(file1);
directory2.add(file2);
directory3.add(file3);
directory3.add(file4);
directory4.add(file5);
directory1.add(directory2);
directory1.add(directory3);
directory1.add(directory4);
directory1.printList();
}
}