這裏的遊客設計模式的背景下/示例代碼。方法命名
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