使用访问者模式和接口有什么区别?

Vhaerun:

将访问者设计模式应用于您的代码与以下方法之间有什么区别:

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();
    }
}

我假设通过使用接口,我们并没有真正分离算法。

Benno Richters:

两件事情:

  • 在您的示例中,您需要两种方法。perfomsetInterface使用访客模式,您只需要一种方法perfom,通常称为accept
  • 如果您需要多个“表演者”,则必须通过setInterface方法为每个表演者设置表演者这样就不可能使您的类不可变。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章