Создайте индекс достоверности на основе истинных или ложных утверждений

Проблема заключается не столько в том, что «две перечисления ссылаются друг на друга», это больше «два перечисления ссылаются друг на друга в своих конструкторах ». Эта круговая ссылка - сложная часть.

Как насчет использования методов Foo.setResponse(Bar b) и Bar.setResponse(Foo f)? Вместо того, чтобы устанавливать панель Foo в конструкторе Foo (и аналогично Bar's Foo в конструкторе Bar), вы выполняете инициализацию с помощью метода? Например:

Foo:

public enum Foo {
  A, B, C;

  private void setResponse(Bar b) {
    this.b = b;
  }

  private Bar b;

  public Bar getB() {
    return b;
  }

  static {
    A.setResponse(Bar.Alpha);
    B.setResponse(Bar.Delta);
    C.setResponse(Bar.Alpha);
  }
}

Bar:

public enum Bar {
  Alpha, Beta, Delta;

  private void setResponse(Foo f) {
    this.f = f;
  }

  private Foo f;

  public Foo getF() {
    return f;
  }

  static {
    Alpha.setResponse(Foo.A);
    Beta.setResponse(Foo.C);
    Delta.setResponse(Foo.C);
  }
}

Кроме того, вы отмечаете, что Foo и Bar - это два типа сообщений. Можно ли объединить их в один тип? Из того, что я вижу, их поведение здесь одно и то же. Это не исправляет круговую логику, но это может дать вам другое представление о вашем дизайне ...

0
задан Davide 17 February 2019 в 17:54
поделиться