Уровень доступа к элементам в шаблоне посетителя - PullRequest
3 голосов
/ 15 июля 2011

В шаблоне посетителей я хочу, чтобы клиент имел доступ только к получателям элементов, а посетители должны иметь доступ к получателям и установщикам. Как бы вы это реализовали?

Я не хочу, чтобы посетители были в той же упаковке, что и модель (там уже много классов). Я думал о представлении интерфейса IWriteable, который содержит сеттеры и методы приема. Есть ли лучший способ?

enter image description here

Спасибо

1 Ответ

0 голосов
/ 16 июля 2011

@ Angel O'Sphere:

Пакет будет содержать модели, посетителей и фабрики всего этого ~ 2x (интерфейсы и имплс).У меня тоже были мысли о мошеннических программистах, поэтому я и спросил.Другой подход будет:

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

...