将整体与部分的处理统一,典型应用树状结构
public interface AbstractFile {//抽象接口类
public void killVirus();
}
class ImageFile implements AbstractFile{//具体实现类 叶子节点
String name;
public ImageFile(String name) {
super();
this.name = name;
}
@Override
public void killVirus() {
// TODO Auto-generated method stub
System.out.println("kill virus " + name);
}
}
class TextFile implements AbstractFile{//具体实现类 叶子节点
String name;
public TextFile(String name) {
super();
this.name = name;
}
@Override
public void killVirus() {
// TODO Auto-generated method stub
System.out.println("kill virus " + name);
}
}
class FolderFile implements AbstractFile{//具体实现类 非叶子节点
String name;
List<AbstractFile> list_file = new ArrayList<AbstractFile>();
public FolderFile(String name) {
super();
this.name = name;
}
public void add( AbstractFile file)
{
list_file.add(file);
}
@Override
public void killVirus() {
// TODO Auto-generated method stub
for( AbstractFile file : list_file)
{
file.killVirus();
}
}
}
public class Client {//使用类
public static void main(String[] args)
{
AbstractFile af1, af2, af3, af4;
af1 = new ImageFile("hello.jpg");
af2 = new TextFile("hello.txt");
af3 = new ImageFile("111.gif");
af4 = new TextFile("111.txt");
FolderFile ff = new FolderFile("donwload");
ff.add(af1);
ff.add(af2);
ff.add(af3);
ff.add(af4);
ff.killVirus();
af1.killVirus();
}
}