interface Visitor {
void visit(Gladiolus g);
void visit(Runuculus r);
void visit(Chrysanthemum c);
}
interface Flower{
void accept(Visitor v);
}
class Gladiolus implements Flower {
public void accept(Visitor v) { v.visit(this);}
}
//通过用visitor模式的写法
Visitor vst;
List<Flower> flowers = new ArrayList<Flower>();
Iterator<Flower> it = flowers.iterator();
while(it.hasNext()) {
it.next().accept(vst);
//vst.visit(it.next());//同上
}
可以看出针对不同的对象需要Visitor重载visit方法
参考:http://www.iteye.com/topic/114287
void visit(Gladiolus g);
void visit(Runuculus r);
void visit(Chrysanthemum c);
}
interface Flower{
void accept(Visitor v);
}
class Gladiolus implements Flower {
public void accept(Visitor v) { v.visit(this);}
}
//通过用visitor模式的写法
Visitor vst;
List<Flower> flowers = new ArrayList<Flower>();
Iterator<Flower> it = flowers.iterator();
while(it.hasNext()) {
it.next().accept(vst);
//vst.visit(it.next());//同上
}
可以看出针对不同的对象需要Visitor重载visit方法
参考:http://www.iteye.com/topic/114287