Tiger下的Visitor
public interface Visitable
{
void accept(Visitor<Visitable> visitor);
}
public interface Visitor<A>
{
void visit(A visitable);
}
public class VisitableA implements Visitable
{
public String Call(){
return "AAA";
}
public void accept(Visitor<Visitable> visitor) {
visitor.visit(this);
}
}
public class VisitorA<A> implements Visitor<B>
{ public void visit(A visitable) {
System.out.println(visitable.Call());
}
}
public class Client{
public static void main(String args[])
{
Visitor<Visitable> visitor=new VisitorA<VisitableA>();
Visitable visitable=new VisitableA();
visitable.accept(visitor);
}
}