组合模式有时又叫整体-部分模式,在处理树形结构的问题的时候比较方便。
//抽象类:Node
public abstract class Node
{
protected String name;
public Node(String name)
{
this.name = name;
}
public void addNode(Node node) throws Exception
{
throw new Exception("invalid exception");
}
abstract void display();
}
//文件实现类
public class Filer extends Node
{
public Filer(String name)
{
super(name);
}
@override
public void display()
{
System.out.println(name);
}
}
//目录实现类:Noder
public class Noder extends Node
{
List<Node> nodeList = new ArrayList<Node>();
public Noder(String name)
{
super(name);
}
public void addNode(Node node) throws Exception
{
nodeList.add(node);
}
@override
public void display()
{
System.out.println(name);
for(Node node:nodeList)
{
node.display();
}
}
}
//测试类
import java.io.File;
public static void createTree(Node node) throws Exception
{
File file = new File(node.name);
File[] flist = file.listFile();
for(File f:flist)
{
if(f.isFile())
{
Filer filer = new Filer(f.getAbsolutePath());
node.addNode(filer);
}
if (f.isDirectory())
{
Noder noder = new Noder(f.getAbsolutePath());
node.addNode(noder);
createTree(noder);
}
}
public static void main(String[] args)
{
Node noder = new Noder("E://ceshi");
try
{
createTree(noder);
}
catch(Exception e)
{
e.printStackTrace();
}
noder.display();
}
}