访客和复合模式

时间:2012-12-05 21:57:50

标签: java design-patterns

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

我有一个Composite接口。它只有接受方法。

我有一个抽象类Composite来处理子管理功能(add,remove和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);
    }

}

1 个答案:

答案 0 :(得分:3)

这不是你要找的吗?

public abstract class Composite implements Element {

    protected List<Element> elements;

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

}