这里的游客设计模式的背景下/示例代码。方法命名
public interface Visitable{
public void accept(Visitor v);
}
public class Book implements Visitable{
public void accept(Visitor v){
v.visit(this);
}
public void read() {}
/**
book stuff
**/
}
public class Movie implements Visitable{
public void accept(Visitor v){
v.visit(this);
}
public void watch() {}
/**
movie stuff
**/
}
public interface Visitor{
public void visit(Book b);
public void visit(Movie m);
}
public class Person implements Visitor{
public void visit(Book b){
b.read();
}
public void visit(Movie m){
m.watch();
}
}
我的教练说,这是没有一个好主意,超载visit
方法,我应该给一个独特的名字,看起来像下面的每次访问方法。我不相信这个想法。有人可以解释什么是超载visit
方法的缺点?
public interface Visitor{
public void visitBook(Book b);
public void visitMovie(Movie m);
}
public class Person implements Visitor{
public void visitBook(Book b){
b.read();
}
public void visitMovie(Movie m){
m.watch();
}
}
我也想知道这个答案,因为我同意你的看法。我从来没有见过这样做的实现。除了笨拙地阅读,我觉得有方法名称反映你正在访问的抽象是很奇怪的。这些参数包含在内。 – Vidya
@Vidya然后投票赞成:D – xiamx
完成。让我们看看发生了什么。 – Vidya