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

标签 java design-patterns visitor-pattern

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

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

enter image description here

谢谢

最佳答案

@Angel O'Sphere:

该包将包含大约 2 倍的模型、访问者和工厂(接口(interface)和实现)。 我也对流氓程序员有一些想法,这就是我问的原因。 另一种方法是:

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

关于java - 访问者模式中元素的访问级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6705362/

相关文章:

java - 指定的 DSN 包含体系结构不匹配错误

java - ph-schematron 验证错误消息

java - 根据对象值实例化特定类

java原型(prototype)设计模式对象创建

php - 访问者模式对动态类型语言有用吗?

c# - 树遍历 API 的访问者模式与 LINQ 风格的流畅语法

java - 用于实现嵌套 map 之类的数据结构?

没有名字的Java构造函数?

java - 使用 HttpCore 实现自定义 HTTP 方法

c++ - 如何处理不明确的模板参数?