将访问者设计模式应用于您的代码与以下方法有什么区别:
interface Dointerface {
public void perform(Object o);
}
public class T {
private Dointerface d;
private String s;
public String getS() {
return s;
}
public T(String s) {
this.s = s;
}
public void setInterface(Dointerface d) {
this.d = d;
}
public void perform() {
d.perform(this);
}
public static void main(String[] args) {
T t = new T("Geonline");
t.setInterface(new Dointerface() {
public void perform(Object o) {
T a = (T)o;
System.out.println(a.getS());
}
});
t.perform();
}
}
我假设通过使用接口(interface),我们并没有真正分离算法。
最佳答案
区别还是挺大的。
访问者模式使用接口(interface),但其目的是能够对一个或多个类(实现接口(interface)的类)执行操作而无需更改类。因此,该实现实际上“访问”了该类并在不修改该类的情况下完成了它的工作。
接口(interface)是一个基本概念,用于为可能不同的类组提供通用 API。接口(interface)的典型测试是共享它的类至少在一个方面是相似的 (is-like-a),在这些情况下可以这样对待。
Here is a simple example on wikipedia that shows a couple of visitors in java.
关于java - 使用访问者模式和界面有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/194382/