Как представить обратный вызов в диаграмме классов UML

У меня есть интерфейс say

Interface ICallback {
    public void informFunction();
}

У меня в классе говорят:

Class Implementation implements ICallback {

   public Implementation() {
      new AnotherImplementation(this);
   }

   @override
   public void informFunction() {
      // do something
   }

}

Теперь рассмотрим класс, где в экземпляре реализации класса передается как интерфейс и используется для обратного вызова.

Class AnotherImplementation {
   public ICallback mCallback;

   public AnotherImplementation(ICallback callback) {
      mCallback = callback;
   }

   public void testFunction() {
     mCallback.informFunction();  // Callback
   }
}

Теперь я хочу знать, как я могу создать диаграмму классов UML. самое главное, мне нужно знать, как представить функциональность обратного вызова, которая произойдет в классе AnotherImplementation :: testFunction().

1 ответов


ваш код представлен на следующей диаграмме классов:

enter image description here

он представляет отношения между классами:

  • Implementation осуществляет ICallback
  • Implementation зависит от AnotherImplementation (он создает в своем конструкторе)
  • AnotherImplementation есть ICallback (по имени mCallback)

диаграмма классов не представляют возможности метода. Функциональность метода визуализируется с помощью последовательность или схема совместной работы.

в вашем примере, диаграмма последовательности testFucntion() очень просто:

sequence diagram

отметим, что Implementation класс не отображается на схеме последовательностей. Это происходит потому, что mCallback член объявлен как ICallback. Это может быть все, что реализует ICallback интерфейс.

я думаю, что более интересный вопрос заключается в том, как визуализировать метод, который запускает обратный вызов. Вы не упомяните, какой метод Implementation называет testFunction() of AnotherImplementation, поэтому я предполагаю, что это происходит внутри конструктора Implementation. Я создал следующую диаграмму последовательности для этого конструктора:

callback sequence

здесь вы можете увидеть:

  1. Implementation создает AnotherImplementation
  2. Implementation вызывает testFunction on AnotherImplementation
  3. AnotherImplementation вызывает informFunction on Implementation