在 visitor pattern ,我希望客户端只能访问元素的 getter,而访问者应该有权访问 getter 和 setter。你会如何实现它?
我不希望访问者与模型位于同一个包中(已经有很多类)。 我正在考虑引入 IWriteable 接口(interface),其中包含 setter 和接受方法。 有更好的办法吗?
谢谢
最佳答案
@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/