我正在努力将访问者和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);
}
}
答案 0 :(得分:3)
这不是你要找的吗?
public abstract class Composite implements Element {
protected List<Element> elements;
public void accept(Visitor visitor) {
for(Element element: elements) {
element.accept(visitor);
}
}
}