0

私は、Javaで訪問者と複合パターンを組み合わせるのに苦労しています。

コンポジット用のElementインターフェースがあります。acceptメソッドのみがあります。

子管理関数(add、remove、getChild)を処理するための抽象クラスCompositeがあります。各サブクラスで実行する必要がないように、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 に答える