class Gladiolus implements Flower {
public void accept(Visitor v) { v.visit(this);} }
class
Runuculus implements Flower { public void accept(Visitor v) {
v.visit(this);} }
class Chrysanthemum implements Flower {
public void accept(Visitor v) { v.visit(this);} }
// Add
the ability to produce a string: //实现的具体访问者角色
class StringVal
implements Visitor { String s; public String toString() { return
s; } public void visit(Gladiolus g) { s = "Gladiolus";
}
public void visit(Runuculus r) { s = "Runuculus";
}
public void visit(Chrysanthemum c) { s =
"Chrysanthemum"; } }
// Add the ability to do "Bee"
activities: //另一个具体访问者角色
class Bee implements Visitor {
public void visit(Gladiolus g) { System.out.println("Bee and
Gladiolus"); }
public void visit(Runuculus r)
{ System.out.println("Bee and Runuculus"); }
public void
visit(Chrysanthemum c) { System.out.println("Bee and
Chrysanthemum"); } }
//这是一个对象生成器 //这不是一个完整的对象结构,这里仅仅是模拟对象结构中的元素
class FlowerGenerator { private static Random rand = new
Random(); public static Flower newFlower() { switch(rand.nextInt(3)) { default: case 0:
return new Gladiolus(); case 1: return new Runuculus(); case
2: return new Chrysanthemum(); } } }