(Java)复合模式和访客模式或此处仅使用访客模式?

时间:2017-01-04 18:21:16

标签: java design-patterns aggregation composite visitor-pattern

很抱歉,如果之前已经提出这个问题。我找不到一个完全解决我所处的情况的问题。我最接近找到一个令人满意的答案是有人提到访客模式和复合模式可以一起使用。

我的问题是这个。假设您有一个文件系统,包含一个包含文件的根目录和包含更多文件和更多目录的其他目录。这遵循复合模式,不是吗?好吧,我要设计一个带有不同Visitor类的fileSystemVisitor接口,并使用它们来浏览目录和文件。我的设计会是两者的结合吗?事实上我已经写了一段时间的代码。它工作正常,但我的问题是我的代码使用两种模式或只使用一个访问者。下面是DirectoryNode类的代码(显然)用于目录。我不是在问代码是否正确,只是它遵循复合模式的聚合部分。

import java.util.*;

public class DirectoryNode implements FileSystemNode, Iterable<FileSystemNode> {
    private String name;
    private List<FileSystemNode> nodes;

    public DirectoryNode(String name, List<FileSystemNode> nodes) {
        this.name = name;
        this.nodes = nodes;
    }

    public String getName() {
        return name;
    }

    public Iterator<FileSystemNode> iterator() {
        return nodes.iterator();
    }

    public <T> T accept(FileSystemVisitor<T> v) {
        return v.visitDirectory(this);
    }
}

我是否正确地假设我在这个类中聚合了FileSystemNode?

这个UML图表是否正确?还是没有聚合箭头? Composite+Visitor UML

0 个答案:

没有答案