我有一个界面说

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()中发生的回调功能。

最佳答案

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

它代表了类之间的关系:

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

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

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

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

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

    在这里您可以看到:
  • Implementation创建AnotherImplementation
  • ImplementationtestFunction上调用AnotherImplementation
  • AnotherImplementationinformFunction上调用Implementation
  • 10-02 15:04