java - 如何在 UML 类图中表示回调

标签 java callback uml

我有一个接口(interface)说

Interface ICallback {
    public void informFunction();
}

我有一个类(class)说:

Class Implementation implements ICallback {

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

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

}

现在考虑一个类,其中类实现的实例作为接口(interface)传递并用于进行回调。

Class AnotherImplementation {
   public ICallback mCallback;

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

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

现在我想知道如何设计 UML 类图。 最重要的是,我需要知道如何表示将在 AnotherImplementation::testFunction() 类中发生的回调功能。

最佳答案

您的代码在以下类图中表示:

enter image description here

表示类之间的关系:

  • 实现实现ICallback
  • Implementation 依赖于 AnotherImplementation(它在其构造函数中创建一个)
  • AnotherImplementation 有一个 ICallback(名为 mCallback)

类图不代表方法功能。方法功能通过序列或协作图可视化。

在您的示例中,testFucntion() 的序列图非常简单:

sequence diagram

请注意,Implementation 类未显示在序列图中。发生这种情况是因为 mCallback 成员被声明为 ICallback。它可以是实现 ICallback 接口(interface)的任何东西。

我认为更有趣的问题是如何可视化触发回调的方法。你没有提到 Implementation 的哪个方法调用了 AnotherImplementationtestFunction(),所以我猜这发生在 的构造函数中>实现。我为此构造函数创建了以下序列图:

callback sequence

在这里你可以看到:

  1. Implementation 创建 AnotherImplementation
  2. ImplementationAnotherImplementation
  3. 上调用 testFunction
  4. AnotherImplementationImplementation
  5. 上调用 informFunction

关于java - 如何在 UML 类图中表示回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20491501/

相关文章:

uml - 序列图中嵌套的 alt 是一个好习惯吗?

java - 使用 eclipse MDT UML2 读取 .uml 文件时出现 IllegalValue

java - 如何显示以特定数字开头的所有值

java - 使用 PDShadingType4 Apache pdf box 实现类型 4 阴影

java - 多线程 Java ScriptEngine

javascript - JSONP 查询和 AngularJS

javascript - 回调未执行

javascript - Vanilla JS - 单击元素后执行代码

java - 主报告未填写,但子报告已填写

uml - 在我的用例图中定义参与者