组合模式
组合模式
参考文件树:
处理树状结构的一个模式
个人理解为思维导图,有一些的像 例子:

Code:
import java.util.ArrayList;
import java.util.List;
public class TestComposite {
public static void main(String[] args) {
FolderNode root = new FolderNode("root node");
root.add(new FileNode("java.txt"));
root.add(new FileNode("spring.txt"));
FolderNode linuxFolder = new FolderNode("linux folder!");
root.add(linuxFolder);
linuxFolder.add(new FileNode("cd"));
linuxFolder.add(new FileNode("ls"));
linuxFolder.add(new FileNode("touch"));
//打印数
tree(root,0);
}
static void tree(Node root,int depth){
for (int i = 0; i < depth; i++) {
System.out.print("-");
}
root.print();
if (root instanceof FolderNode){
for (Node node : ((FolderNode) root).nodeList) {
tree(node,depth+1);
}
}
}
}
//抽象节点
abstract class Node{
abstract void print();
}
//文件节点
class FileNode extends Node{
String fileName;
public FileNode(String fileName) {
this.fileName = fileName;
}
@Override
public void print() {
System.out.println(fileName);
}
}
//文件夹节点
class FolderNode extends Node{
List<Node> nodeList = new ArrayList<>();
String folderName;
public FolderNode(String folderName) {
this.folderName = folderName;
}
@Override
public void print() {
System.out.println(folderName);
}
//添加到自己的子节点
public void add(Node node){
nodeList.add(node);
}
}

图解:


浙公网安备 33010602011771号