Как представить обратный вызов в диаграмме классов 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 ответов
ваш код представлен на следующей диаграмме классов:

он представляет отношения между классами:
-
ImplementationосуществляетICallback -
Implementationзависит отAnotherImplementation(он создает в своем конструкторе) -
AnotherImplementationестьICallback(по имени mCallback)
диаграмма классов не представляют возможности метода. Функциональность метода визуализируется с помощью последовательность или схема совместной работы.
в вашем примере, диаграмма последовательности testFucntion() очень просто:

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

здесь вы можете увидеть:
-
ImplementationсоздаетAnotherImplementation -
ImplementationвызываетtestFunctiononAnotherImplementation -
AnotherImplementationвызываетinformFunctiononImplementation