0

我正在努力将访问者和 Java 中的复合模式结合起来。

我有一个 Composite 的 Element 接口。它只有accept方法。

我有一个抽象类 Composite 来处理子管理功能(添加、删除和 getChild)。我想在 compiste 类中定义 acccept 方法,以避免在每个子类中都这样做。有没有办法做到这一点?

public abstract class Composite implements Element {

    protected List<Element> elements;

    public Composite() {
        elements = new ArrayList<Element>();
    }

    public void add(Element e) {
     elements.add(e);   
    }

    public void remove(Element e) {
        elements.remove(e);
    }

    public Element getChild(int i) {
        return elements.get(i);
    }

}
4

1 回答 1

3

这不是你要找的吗?

public abstract class Composite implements Element {

    protected List<Element> elements;

    public void accept(Visitor visitor) {
        for(Element element: elements) {
            element.accept(visitor);
        }
    }

}
于 2012-12-05T22:03:50.653 回答