Представлять рабочий процесс в интерфейсе в Java - PullRequest
2 голосов
/ 05 августа 2011

У меня есть похожие методы, которые необходимо реализовать для разных концепций. Но вызов методов должен быть в порядке. Например, скажем, мои методы:

м1, м2, м3, м4. Там будет более одной реализации их. Итак, я хотел собрать их в интерфейсе Java. Но так как они зависят друг от друга, это было немного странно. Затем я решил определить один метод в интерфейсе, который выполняет другие по порядку, но на этот раз интерфейс не отражает его назначение.

Итак, каков наилучший способ представления таких упорядоченных вызовов методов с помощью интерфейса Java и его реализации?

Заранее спасибо

1 Ответ

6 голосов
/ 05 августа 2011

Если поток четко определен, вы можете использовать своего рода шаблон стратегии , определив абстрактный класс, который реализует поток, позволяя подклассам определять только методы потока. Пример:

public interface MyInterface {
  m1();
  m2();
  m3();
  m4();
  flow();
}

public abstract class Strategy implements MyInterface {      
  public final void flow() {
     //implement the flow only
     m1();
     m2();
     m3();
     m4();
  }
}

Обычно шаблон стратегии позволяет подклассам переопределять метод flow (), но так как вы не хотите этого делать, вы помечаете метод flow как final. Таким образом, клиенты будут беспокоиться только о реализациях m1, ..., m4.

...