访问访问者模式中元素的级别

时间:2011-07-15 09:57:19

标签: java design-patterns visitor-pattern

visitor pattern中,我希望客户端只能访问元素的getter,而访问者应该可以访问getter和setter。你会如何实现它?

我不希望访问者与模型在同一个包中(已经有很多类)。 我正在考虑引入包含setter和accept方法的IWriteable接口。 还有更好的方法吗?

enter image description here

由于

1 个答案:

答案 0 :(得分:0)

@Angel O'Sphere:

包将包含所有~2x(接口和impls)的模型,访问者和工厂。 我也有一些关于流氓程序员的想法,这就是我问的原因。 另一种方法是:

public class ModelImpl implement IRead {
  @Override
  public Foo getFoo() {...}

  private void setFoo(Foo f) {...}

  public void accept(Visitor v) {
    v.visit(new ModelEditor());
  }

  private class ModelEditor implement IWrite {
    @Override
    public void setFoo(Foo f) {
      ModelImpl.this.setFoo(f);
    }
  }
}

但这种方法有许多缺点,如果没有生成技术则很麻烦:o