如何在UML类图中表示回调

Nan*_*han 11 java uml callback

我有一个接口说

Interface ICallback {
    public void informFunction();
}
Run Code Online (Sandbox Code Playgroud)

我有一个班级说:

Class Implementation implements ICallback {

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

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

}
Run Code Online (Sandbox Code Playgroud)

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

Class AnotherImplementation {
   public ICallback mCallback;

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

   public void testFunction() {
     mCallback.informFunction();  // Callback
   }
}
Run Code Online (Sandbox Code Playgroud)

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

nak*_*spy 24

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

在此输入图像描述

它代表了类之间的关系:

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

类图不代表方法功能.使用序列或协作图可视化方法功能.

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

序列图

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

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

回调序列

在这里你可以看到:

  1. Implementation 创造了 AnotherImplementation
  2. Implementation调用testFunctionAnotherImplementation
  3. AnotherImplementation调用informFunctionImplementation