将访问者设计模式应用于您的代码和以下方法之间的区别是什么:
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(); } }
我假设通过使用接口,我们并没有真正分离算法.
有很大的不同.
访问者模式使用接口,但其目的是能够对一个或多个类(实现接口)执行操作,而无需更改类.因此,实现实际上"访问"类并在没有修改类的情况下完成它.
接口是一个基本概念,用于为可能不同的类组提供通用API.接口的典型测试是,共享它的类在至少一个方面(类似于a)是相似的,并且在这些情况下可以这样对待.
这是维基百科上的一个简单示例,它显示了java中的几个访问者.