美文网首页
设计模式-composite

设计模式-composite

作者: Wu杰语 | 来源:发表于2020-12-05 21:34 被阅读0次

组合模式适用于特殊的场景,在这种场景下对象是按照树的方式组织的。

例子

例如说文件和文件夹,一个根目录下有若干文件夹和文件,每个文件夹下又有若干文件夹和文件,文件是叶子节点。例如说统计文件夹下的文件数量

class Node {
  final private String path;
  public Node(String path) {
    this.path = path;
  } 
  public abstract int countNum();
  public boolean isFile() {
    return true;
  }
}

class File extends Node {
  public File(String path) {
    super(path);
  }
 public int countNum() {
  return 1;  
  }
}

class Directory extends Node {
  private List<Node> nodes = new ArrayList();
  public Directory(String path) {
    super(path);
  }
  public void addNode(Node node) {
    nodes.add(node);
  }
  public boolean isFile() {
    return false;
  }
  public int countNum() {
     int count = 0;
    for (Node node : nodes) {
       count += node.contNum();
    }
    return count;
  }
}

小结

文件的典型例子诠释了组合模式,对于组合模式,可以看出一种特定的数据结构和算法。

相关文章

网友评论

      本文标题:设计模式-composite

      本文链接:https://www.haomeiwen.com/subject/grcnwktx.html