Как представить обратный вызов в диаграмме классов 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
вызываетtestFunction
onAnotherImplementation
-
AnotherImplementation
вызываетinformFunction
onImplementation