如何在UML类图中表示回调

时间:2013-12-10 10:09:32

标签: java callback uml

我有一个界面说

Interface ICallback {
    public void informFunction();
}

我有一个班级说:

Class Implementation implements ICallback {

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

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

}

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

Class AnotherImplementation {
   public ICallback mCallback;

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

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

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

1 个答案:

答案 0 :(得分:20)

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

enter image description here

它代表了类之间的关系:

  • Implementation实施ICallback
  • Implementation取决于AnotherImplementation(它在构造函数中创建一个)
  • AnotherImplementation有一个ICallback(名为mCallback)

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

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

sequence diagram

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

我认为更有趣的问题是如何可视化触发回调的方法。你没有提到Implementation调用testFunction()的{​​{1}}的方法,所以我猜这种情况发生在AnotherImplementation的构造函数中。我为这个构造函数创建了以下序列图:

callback sequence

在这里你可以看到:

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