如何在UML类图中表示回调

2022-09-03 10:01:42

我有一个接口说

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类图。最重要的是,我需要知道如何表示将在类另一个实现中发生的回调功能::testFunction()。


答案 1

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

enter image description here

它表示类之间的关系:

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

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

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

sequence diagram

请注意,该类不会显示在序列图中。发生这种情况是因为该成员被声明为 。它可以是实现接口的任何内容。ImplementationmCallbackICallbackICallback

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

callback sequence

在这里你可以看到:

  1. Implementation创建AnotherImplementation
  2. Implementation调用于testFunctionAnotherImplementation
  3. AnotherImplementation调用于informFunctionImplementation

答案 2

推荐